2015-07-10 9 views
10

Domyślnym zachowaniem wydaje się być, że nowi użytkownicy nie mają uprawnień ani grup. Nie chciałbym jednak ręcznie przyznawać każdemu nowemu użytkownikowi podstawowych uprawnień, i zakładam, że nie będą musieli na mnie czekać.Nadanie domyślnym uprawnieniom lub domyślnej grupie dla nowych użytkowników

Jak przypisać domyślne uprawnienia nowym użytkownikom?

kilka podobnych pytań zostały poproszone ale bez jasnej odpowiedzi na ogólnym przypadku:

Używam python-social-auth więc don” t mam własną formę użytkownika i widok, który, jak sądzę, jest miejscem, w którym wszyscy inni ustawiają domyślne uprawnienia. Zakładam, że potrzebuję jakiegoś haka na użytek użytkownika, ale nie jestem pewien, jakie jest najczystsze podejście.

ta jest związana z tworzeniem domyślne możliwych uprawnień, które mogą być przyznane do użytkowników, choć odsyłającym

Odpowiedz

9

Możesz zapisać się post_save sygnału od modelu użytkownika i umieść nowo utworzonego użytkownika w wybranej grupie lub dodaj uprawnienia.

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) 

I na Django 1.8+ umieścić następujący kod do AppConfig.ready()

post_save.connect(add_to_default_group, sender=User) 
+3

Dzięki! W moim przypadku myślę, że będę potrzebował także ['sender = settings.AUTH_USER_MODEL'] (https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#referencing-the-user-model). Użyłem również 'group, group_created = Group.objects.get_or_create (name = 'Default')'. – jozxyqk

+0

Jestem nowy w Django, do którego pliku dodaję te linie? – enchance

+0

'' apps.py'' jest plikiem, do którego prowadzą powyższe linie (stąd '' AppConfig'') – polarise

Powiązane problemy