Разрешения на основе роли Django зависят от проекта.
Привет, я работаю над Django, чтобы создать приложение для управления проектами, так как у меня 100 пользователей и более 50 проектов. где один пользователь участвует в нескольких проектах с разной ролью. Теперь, как дать разрешение на основе роли проекта?
Например. Допустим, пользователь "Арнольд" работает над "[проект-А в качестве менеджера, проект-В в качестве поставщика, проект-В в качестве исполнителя]", * Как менеджер Арнольд получит все разрешения в проекте-А, * Как поставщик Арнольд получит разрешения только для чтения в project-B, * Как художник Арнольд получит разрешения на чтение, запись и обновление в project-C,
Итак, теперь скажите мне, как я могу разработать модель отношения, как указано выше?
1 ответ
Вот как я подхожу к этому.
Начните со стандартного объекта User из django (я всегда использую его для своего пользователя, а затем абстрагируюсь оттуда).
Затем я бы создал объект Roles. Роль имеет имя, такое как продавец, владелец, исполнитель и т. Д.
Затем я бы создал объект соединения между пользователем, ролью и проектом.
class Role(...):
name = models.CharField(...)
class Project(...):
...
class ProjectParticipant(...):
user = models.ForeignKey(User)
role = models.ForeignKey(Role)
project = models.ForeignKey(Project)
Затем я мог бы создать собственное правило разрешений @user_passes_test в представлениях, которое проверяет, чтобы убедиться, что пользователь имеет соответствующие отношения с проектом. Я предполагаю, что у вас будет представление, которое раскрывает проект, а затем в нем отображаются различные действия в зависимости от роли ProjectParticipant.