Ticket #143 (closed compito: sistemata)

Opened 3 years ago

Last modified 3 years ago

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:1 Changed 3 years ago by lfranc

  • Owner set to lfranc
  • Status changed from new to assigned

comment:2 Changed 3 years ago by lfranc

Questi commit concretizzano la migrazione:

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 3 years ago by lfranc

  • Status changed from assigned to closed
  • Resolution set to sistemata

comment:4 Changed 3 years 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.

Note: See TracTickets for help on using tickets.