Доступ на основе ролей с использованием django-guardian

Я использую django-guardian для предоставления разрешения на основе ролей и django-userena для профилирования пользователей. У меня есть три вида пользователей: администратор, подчиненный администратор, сотрудник. Администратор может добавить суб-админа, а суб-админ может добавить сотрудников. Я создал три группы в Guardian для трех типов пользователей. Когда пользователь регистрируется, я назначаю этому пользователю группу сотрудников.

class Profile(UserenaBaseProfile):
    class Meta:
    permissions = ( 
                ( "add_admin", "Can add admin" ),
                ( "add_subadmin", "Can add sub admin" ),
                ( "add_employee", "Can add employee" ),
            )
    user = models.OneToOneField(User,
                            unique=True,
                            verbose_name='user',
                            related_name='profile')
    first_name = models.CharField('First name',max_length=100,blank=False,null=False)
    def save(self, *args, **kwargs):
        super(Profile, self).save(*args, **kwargs)
        employee_group = Group.objects.get('employee')
        self.groups.add(employee_group)

Я хочу использовать Django Admin и дать Admin и sub-admin возможность изменять группу пользователей.

Как я могу добавить выпадающий или радио кнопки на панели администратора с помощью AdminModel, чтобы я мог изменить группу пользователя. Или есть ли лучший подход для этого?

1 ответ

Решение

Вы ищете действия администратора, вы должны написать некоторые пользовательские действия администратора.

Обновить

При создании администратора вы можете проверить, если текущий request.user способен видеть эти действия. Мы можем сказать, как, если пользователь не является администратором, то метод пользовательских действий должен вернуть None или просто pass, Существует приложение для получения текущего пользователя в любом месте кода. Когда у вас нет доступа к вашему текущему запросу пользователя, оно называется django-cuser, Это подойдет для вас, когда вам нужно определить, является ли пользователь admin или sub-admin, чтобы сделать доступным для него настраиваемое действие.

Начать с условного включения или отключения действий

Другие вопросы по тегам