Man Tecnico:Analisi gestione utenti

From CDG Wiki
Revision as of 11:40, 23 September 2020 by Cdgmilano (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Analisi dei requisiti

Il framework prevede un sistema di utenze basato su 3 livelli:

  • 1 Livello utente;
  • 2 Livello admin;
  • 3 Livello superadmin.

Risulta immediato comprendere che questa suddivisione non è sufficiente per garantire le funzionalità richieste. A livello di framework può essere inoltre gestito un sistema di profilazione che prevede la definizione di ruoli e accesso alle risorse ma risulta molto rigido rispetto alla flessibilità che si intende fornire allo strumento. Si necessita infatti di gestire una profilazione dinamica alle risorse, che consideri la posizione dell'azienda del dipendente e la configurazione dei moduli in un determinato momento. Lo stesso utente può avere privilegi differenti sulle risorse a seconda dei parametri globali selezionati in ogni pagina (anno, piano CdR, CdR e dipendente delegato). Sarà opportuno permettere, tramite configurazione, l'integrazione con sistemi di active directory come LDAP, ADFS, Azure AD, per poter facilitare la gestione delle utenze agli amministratori e garantire un livello di sicurezza più elevato rispetto all'autenticazione in locale (DB applicativo), che viene in ogni caso garantita come opzione.

Descrizione delle funzionalità

La gestione utenze dovrà quindi prevedere vari passaggi:

  1. Autenticazione dell'utente tramite credenziali, in locale o tramite sistema di active directory;
  2. Nel caso di autenticazione tramite AD viene verificata la presenza dell'utente a DB per verificare l'abilitazione per l'applicativo (non sempre si intende abilitare tutti gli utenti del dominio aziendale all'accesso). In caso l'utente non sia abilitato viene visualizzato lo specifico messaggio di errore critico;
  3. Viene recuperata la matricola dell'utente tramite campo di AD oppure tramite definizione locale: in caso di accesso tramite AD è possibile comunque gestire la matricola associata agli utenti tramite configurazione manuale anche se questa scelta è sconsigliata. Una volta recuperata la matricola viene confrontata con la tabella del personale per poter agganciare le informazioni del dipendente. Nel caso non si riesca a trovare una corrispondenza viene visualizzato errore critico;
  4. Vengono determinati, per la pagina e i parametri selezionati, i privilegi dell'utente in base al livello utente del framework e alla posizione in azienda secondo i criteri selezionati.

Scelte implementative

Per implementare il sistema di gestione utenze è necessario agire in almeno tre ambiti dell'applicativo:

  • Sistema di gestione utenze del framework, tramite il file common.php del mod_security: qui verranno implementate le operazioni di autenticazione dell'utente e inizializzazione delle sessioni;
  • File conf/contents/common.php per poter gestire il recupero dei parametri e la definizione dei privilegi lato front controller sfruttando gli eventi del framework;
  • Classe singleton LoggedUser che implementa attributi e metodi per poter definire in fase di inizializzazione e recuperare nelle pagine tutte le informazioni sull’utente loggato.

Modello ER

Non vengono definite entità specifiche a DB per le funzionalità ma vengono sfruttate quelle già presenti a livello di framework.

Modello Classi

class LoggedUser

Classe singleton per la rappresentazione dell'utente loggato.

  • Attributi
  • public $matricola_utente_collegato;
  • public $matricola_utente_selezionato;
  • public $user_groups = array();
  • public $deleghe_accesso = array();
  • public $user_privileges = array();
  • public static $groups = array (
      1 => "Superamdin",
      2 => "Admin",
      3 => "Controllo di Gestione",
      4 => "Direzione",
      5 => "Responsabile cdr",
   );
  • Metodi
  • public static function Instance()
Restituisce l'oggetto della classe singleton.
  • private function __construct()
Costruttore della classe, richiamato dal metodo "Instance()" nel caso in cui l'oggetto non sia ancora stato istanziato. Vengono attributi all'utente i privilegi del core in base ai parametri globali definiti popolando l'attributo $user_groups che potrà assumere i valori "cdr_view_all", "user_selection", "gestione_azienda", "moduli_admin", "deleghe_admin", "anni_budget_admin", "delega_accesso".
  • public function hasPrivilege($privilege)
Viene verificato che l'utente abbia il privilegio passato come parametro.
  • public function hasDelegaModuloAnno(Modulo $modulo)
Viene verificato se è presente una delega dell'utente per il modulo passato come parametro.

Note tecniche (implementazioni particolari)

Il campo matricola nella tabella cm_mod_security_users_fields rappresenta la matricola degli utenti collegati nel caso venga utilizzato un sistema di login locale dell'applicativo e permette di associare il personale della tabella anagrafica agli utenti dell'applicativo, di fatto collega il dipendente all'utente.Viene mantenuto anche in caso di recupero della matricola da LDAP o da altri sistemi di Active Directory per garantire il corretto funzionamento dell'applicativo (per via dei vincoli imposti dal framework) ma in questi casi viene valorizzato automaticamente e anche se variato non impatta in alcun modo con la gestione dei privilegi.

Torna all'Indice del Manuale Tecnico