Предоставление разрешений по умолчанию или группы по умолчанию для новых пользователей

Поведение по умолчанию, кажется, новые пользователи не имеют никаких разрешений и групп. Однако я не хотел бы вручную предоставлять каждому новому пользователю базовые разрешения, и я бы предположил, что им не нужно будет ждать, пока я это сделаю.

Как назначить разрешения по умолчанию для новых пользователей?

Были заданы некоторые похожие вопросы, но без четкого ответа для общего случая:

я использую python-social-auth поэтому у меня нет своей собственной формы и представления для создания пользователя, которая, как я предполагаю, является тем, где все остальные устанавливают разрешения по умолчанию. Я предполагаю, что мне нужен какой-то хук на создание пользователя, но я не уверен, что это самый чистый подход.

Это не связано с созданием возможных разрешений по умолчанию, которые могут быть предоставлены пользователям, хотя для справки:

1 ответ

Решение

Вы можете подписаться на сигнал post_save на модели User и поместить вновь созданного пользователя в желаемую группу или добавить разрешения.

from django.contrib.auth.models import User, Group

def add_to_default_group(sender, **kwargs):
    user = kwargs["instance"]
    if kwargs["created"]:
        group = Group.objects.get(name='groupname')
        user.groups.add(group)

И на django 1.8+ поместите следующий код в ваш AppConfig.ready()

 post_save.connect(add_to_default_group, sender=User)
Другие вопросы по тегам