2015-07-10 11 views
10

Il comportamento predefinito sembra essere i nuovi utenti non hanno autorizzazioni e nessun gruppo. Tuttavia, mi piacerebbe non dover concedere manualmente le autorizzazioni di base a tutti i nuovi utenti e suppongo che vorrebbero non dover aspettare che lo faccia.Concessione di autorizzazioni predefinite o un gruppo predefinito per i nuovi utenti

Come devo assegnare le autorizzazioni predefinite per i nuovi utenti?

Alcune domande simili è stato chiesto, ma con nessuna risposta chiara per il caso generale:

sto usando python-social-auth così ho don' Ho il mio modulo di creazione utente e la vista che immagino sia dove tutti gli altri impostano le autorizzazioni predefinite. Presumo che io abbia bisogno di un hook di tipo on-user, ma non sono sicuro di quale sia l'approccio più pulito.

Questo non è correlato a creare le eventuali autorizzazioni predefinite che possono essere concessi per gli utenti, anche se per riferimento,

risposta

9

È possibile iscriversi a post_save segnale sul modello User e metti l'utente appena creato al gruppo desiderato o aggiungi le autorizzazioni.

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) 

E su Django 1.8+ messo seguente codice nel tuo AppConfig.ready()

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

Grazie! Nel mio caso penso che avrò bisogno anche di ['sender = settings.AUTH_USER_MODEL'] (https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#referencing-the-user-model). Ho anche usato 'group, group_created = Group.objects.get_or_create (name = 'Default')'. – jozxyqk

+0

Sono nuovo di Django, quale file aggiungere a queste righe? – enchance

+0

'' apps.py'' è il file in cui vanno le righe precedenti (quindi '' AppConfig'') – polarise

Problemi correlati