Я реализую функциональные возможности разрешений в моем webapp. Требования, указанные клиентом, заключаются в том, что пользователи могут выполнять некоторые действия на основе того, какой пользователь они представляют. Тип пользователя определяется на основе комбинации user_type:user_role
. Это модель:Django: получить разрешения от user_type
class User(AbstractUser):
usertype = models.IntegerField(choices=UserType.CHOICES, default=UserType.BUYER_USER)
role = models.IntegerField(choices=UserRole.CHOICES, default=UserRole.NORMAL_USER)
Например, мы можем иметь:
adviser:regular
: можетmanager_orders
adviser:admin
: может сделать какаяadviser:regular
делает, а такжеmanage_advisers
(это не Джангоadmin
, но администратор для консультантов!)
(более user_type:user_role
)
Это, кажется, конфликтовать с django permission system, который основан на , что разрешение пользователь имеет, вместо , какой пользователь оно.
Т.е. при использовании системы разрешений django мне нужно определить все возможные разрешения и назначить эти разрешения для затронутого пользователя. Вместо этого, с подходом, который я планирую, мне нужно будет получить разрешение от user_type:user_role
.
Имеет ли смысл использовать систему разрешения django в этом контексте? Как я могу получить разрешение от user_type:user_role
Ну, если это возможно, почему бы не использовать start, используя концепцию dzhango 'groups'? Вы можете создать одну группу и назначить определенное разрешение этой группе, тогда все пользователи в группе наследуют это разрешение. В этом случае на вопрос «какой пользователь это» можно ответить, проверив группу, к которой он принадлежит. –
@ShangWang: спасибо, но все еще неясно. Я бы все же имел (возможно) противоречивую информацию: с одной стороны, user_type: user_role, с другой стороны, к группе, к которой принадлежит пользователь. Поскольку группа является решающим параметром, user_type: user_role не имеет значения.Это именно то, чего я хочу избежать: я хочу получить разрешения непосредственно из user_type: user_role, а не из других параметров (разрешения или группы) – dangonfast
Что я предлагаю на самом деле не применять к вашей модели, это альтернативный подход который больше подходит для django, чем ваш оригинальный дизайн. Я действительно не знаю, как вы могли применить свой подход к системе разрешений (но определенно что-то настроенное), но вам может быть проще использовать группу для представления 'usertype' и' role'. –