Ticket #143 (closed compito: sistemata)
Integrare l'applicazione ``django-flexi-auth`` nel gestionale
| Reported by: | lfranc | Owned by: | lfranc |
|---|---|---|---|
| Priority: | bloccante | Milestone: | Festa provinciale dei GAS a Civitanova |
| Component: | sviluppo | Keywords: | auth/auth |
| Cc: |
Description
Fino ad ora, la maggior parte del codice relativo alla gestione del controllo dell'accesso nel gestionale (ruoli, permessi, ecc.) era contenuto all'interno dell'applicazione gasistafelice.auth.
Vista la discreta complessità di tale applicazione, mi è sembrata una buona idea convertirla in un'applicazione Django stand-alone generica, quindi riusabile anche in altri progetti. Alcuni vantaggi derivanti da questo approccio:
- è più semplice scrivere gli unit tests per l'applicazione;
- il controllo dell'accesso diventa in gran parte "disaccoppiato' dal resto del gestionale, per cui ci sono meno interazioni con le altre applicazioni ed è quindi più facile eseguire il debugging.
In questo modo, è sufficiente che i modelli soggetti a controllo dell'accesso implementino gli appositi hook (ovvero i metodi .can_*()) e .setup_roles()`, aka Authorization API), mentre la logica di controllo è delegata all'applicazione esterna, che ho chiamato django-flexi-auth.
A questo punto ciò che resta da fare è eliminare l'applicazione gasistafelice.auth e rimpiazzarla con django-flexi-auth.
Change History
comment:2 Changed 20 months ago by lfranc
Questi commit concretizzano la migrazione:
- https://github.com/feroda/gasistafelice/commit/f6c2e7a9307406c7bcac5643b34d4a1e038f190f
- https://github.com/feroda/gasistafelice/commit/417937a6c8dba9df2592532415495f644199b586
Per verificare se ci sono stati effetti collaterali, bisognera fare un po' di testing ;-) (comunque ho cercato di fare la massima attenzione a non "rompere" nulla).
comment:3 Changed 20 months ago by lfranc
- Status changed from assigned to closed
- Resolution set to sistemata
comment:4 Changed 20 months ago by dom_thual
Uno dei test da fare:
Il blocco /gasistafelice/rest/views/blocks/gas_list.py
implementa if request.user.has_perm(CREATE, obj=GAS, des=des):
Url per la lista dei gas del des (/gasistafelice/rest/site/1/gas_list/?render_as=list)
Il test consiste nel collegarsi con il superuser e puoi con un gasista.
Vedere in ambedue casi il corretto rendering del blocco.
