Права пользователя для пользовательской модели в Django - PullRequest
0 голосов
/ 14 января 2020

У меня есть пользовательская модель:

class User(AbstractUser):
    """
    Our own User model. Made by overriding Django's own AbstractUser model.
    We need to define this as the main user model in settings.py with 
    variable AUTH_USER_MODEL *IMPORTANT* 
    """
    is_admin = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    email = models.EmailField(
        max_length=255,
        unique=True,
        verbose_name="email address"
    )
    institute = models.ForeignKey(
        Institute, on_delete=models.SET_NULL, null=True)

    objects = MyUserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    def __str__(self):
        return self.email

У меня есть два пользователя в моих проектах. Один - супер администратор, а другой - админ. Я определил модель для администратора следующим образом:

class AdminUser(User):
    is_admin = False
    is_staff = True

    def __str__(self):
        return self.first_name+" "+self.last_name

    # Control model features
    class Meta:
        verbose_name = 'Admin User'
        verbose_name_plural = 'Admin Users'

Теперь я хочу отозвать доступ всей модели пользователя у этого пользователя-администратора. Как это могло быть достигнуто? В будущем у нас будет еще много типов пользователей. Они будут указаны через модели.

1 Ответ

0 голосов
/ 14 января 2020

Этого можно добиться, просто используя группы в Django.

. Вы будете вашим суперпользователем, который будет иметь все разрешения по умолчанию, используя поле is_admin=True. Второй пользователь может быть простым пользователем персонала, который является членом группы «Администраторы», просто создайте группу и назначьте все разрешения для этой группы, кроме разрешений для добавления, изменения и удаления пользователей.

Это будет сделайте свое дело.

Обновление : если вам нужны более сложные случаи, вы можете использовать приложение django-groups-manager или django-guardian, чтобы вы могли создавать группы в деревьях, там вы можете использовать больше Правила доступа, управляемые доменом. **

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