Django пользователей и разрешений - PullRequest
0 голосов
/ 20 февраля 2020

Мне нужно разработать сценарий пользователей и групп в моем приложении django. Есть три группы: Администратор - Менеджер - Сотрудник Обычно администратор доступен путем создания суперпользователя, и мне нужно создать пользователей для разных групп - Администратор может получить доступ все записи, созданные всеми пользователями

Теперь мое требование состоит в том, что некоторые пользователи относятся к группе менеджеров, а некоторые обычные пользователи относятся к группе сотрудников.

  • Как ассоциированный пользователь относится к группе менеджеров Я могу получить свои собственные записи вместе с записями своего подчиненного пользователя из группы сотрудников

Я полностью сбит с толку, чтобы установить связь между обычными пользователями с ассоциированным пользователем из группы менеджеров.

Как можно Ли назначить некоторых сотрудников сотруднику менеджера?

1 Ответ

1 голос
/ 20 февраля 2020

Просто чтобы убедиться, что мы находимся на одной странице, вы sh будете иметь следующую структуру пользователя:

  • Администратор может видеть ВСЕ
  • A Менеджер может видеть СЕБЯ и всех связанных с ним пользователей
  • A Пользователь может видеть СЕБЯ и все тут

Технически, существует только связь между Менеджерами и пользователями

Предполагая, что ваша Admin не совпадает с ролью нативного администратора из Django, вы может настроить следующие логи c:

  • Расширить модель пользователя с отношением 1: 1 к вашей пользовательской модели. Давайте назовем это Profile.
  • Одним из полей в Profile может быть role, которое может быть либо Admin, Manager, либо User (может потребоваться создать ссылочную таблицу и использовать внешний ключ )
  • Другое поле может быть related_manager, которое будет внешним ключом для пользовательской модели. Это был бы способ сказать «этот пользователь - мой менеджер»

Вам необходимо добавить указанный c элемент управления в вашу модель, а именно:

  • related_manager требуется (или необязательно?), Если пользователь «Пользователь».
  • related_manager принудительно устанавливается на None, если пользователь не «Пользователь»
  • related_manager должен быть пользователем с ролью «Менеджер»
  • Возможно, вы необходимо настроить signals для обработки «Что произойдет, когда менеджер, у которого есть пользователи для управления, станет базовым c пользователем?» Становятся ли эти пользователи неуправляемыми? Или, может быть, вы предотвращаете это, и менеджер может быть понижен в должности только после того, как к нему не подключен пользователь? Все зависит от того, что вы хотите

Обратите внимание, что это один из многих способов справиться с вашей ситуацией

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...