2015-07-10 17 views
10

Das Standardverhalten scheint neu zu sein, Benutzer haben keine Berechtigungen und keine Gruppen. Ich möchte jedoch nicht jedem einzelnen neuen Benutzer die grundlegenden Berechtigungen manuell gewähren müssen, und ich würde annehmen, dass er nicht auf mich warten muss.Neuen Benutzern Standardberechtigungen oder eine Standardgruppe geben

Wie sollte ich Standardberechtigungen für neue Benutzer zuweisen?

Ich verwende python-social-auth so I don‘:

einige ähnliche Fragen wurden ohne klare Antwort für den allgemeinen Fall gefragt, aber Ich habe mein eigenes create-user-Formular und sehe, dass alle anderen Standardrechte festlegen. Ich nehme an, ich brauche einen Benutzer-erstellen-Haken von einer Art, aber nicht sicher, was der sauberste Ansatz ist.

Dies ist in keinem Zusammenhang die Standard möglich Berechtigungen zu erstellen, die den Benutzern gewährt werden kann, wenn auch als Referenz,

Antwort

9

Sie können post_save Signal auf User-Modell abonnieren und legen Sie den neu erstellten Benutzer auf die gewünschte Gruppe oder fügen Sie Berechtigungen hinzu.

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) 

Und auf django folgenden Code in die AppConfig.ready()

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

Dank 1.8+ setzen! In meinem Fall denke ich, dass ich auch ['sender = settings.AUTH_USER_MODEL'] (https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#referencing-the-user-model) brauche. Ich habe auch 'group_group_created = Group.objects.get_or_create (name = 'Default')' 'verwendet. – jozxyqk

+0

Ich bin neu in Django, welche Datei füge ich diesen Zeilen hinzu? – enchance

+0

'' apps.py'' ist die Datei in die die obigen Zeilen gehören (daher '' AppConfig'') – polarise