Gestita dall'app auth
.
Appena si crea l'applicazione vengono create delle tabelle per la gestione degli utenti, come auth_user
. Le tabelle sono create nel DB alla prima migrazione. La relazione mantiene campi come user, pass, ..., is_admin
(flag amministratore) e is_staff
(flag editor sito).
self.request.user
da CBV o FBV.
user.<field>
da template.
Alla creazione Admin
o Anonymous
.
La gestione dei permessi permette di caratterizzare utenti diversi da admin e anonymous.
#Hint modella il DB prima di crearlo sul DBMS
Nel caso della biblioteca:
- utente anonimo: permesso in lettura ad alcune tabelle
- utente base (lettore): scrittura con bassi privilegi
- staff (bibliotecario)
- admin
Login e logout sono offerti dal package views.LoginView
e views.LogoutView
. È semplice come registrare gli endpoint login e logout. Devo tuttavia scrivere i template: login.html
e logged_out.html
in templates/regisration
. In settings posso impostare il success URL.
Form di creazione tailor-made, si può ereditare da forms.UserCreationForm
. Creato sulla base della classe User
; posso estenderla con altri campi nel caso in cui il servizio lo richieda.
- nascondere i link alle view a cui non si è autorizzati (incompleto)
- ritornare http 401/403 per view proibite (decoratore
@login_required
)
#Hint passa un parametro GET alla pagina di login: notok per segnalare errore di auth.
Si usano gli AccessMixin
. La CBV eredita da LoginRequiredMixin
, che appone automaticamente il decoratore @login_required
ai metodi della classe.
#Attenzione è la prima classe da cui deve ereditare
Gestibili con i Django Groups: tabella dei gruppi di utenti.
Alla creazione dell'utente devo aggiungerlo al gruppo di appartenenza.
g = Group.objects.get(name='Lettori')
g.user_set.add(user)
Per verificare l'appartenenza di un utente ad un gruppo, su una FBV, posso usare un decoratore.
I mixin per i gruppi sono offerti dal pacchetto django-braces
. Si usa ereditando da GroupRerquiredMixin
e definendo la variabile di classe group_required: List[str]
, dove vengono enumerati i gruppi a cui deve appartenere.
Per proteggere le view usate dagli amministratori: PermissionRequiredMixin
Definendo se si necessita del permesso da staff o admin.