jorvik
jorvik copied to clipboard
WiP: JO-712: richiesta creazione casella di posta gsuite tramite GAIA
Motivazione
E' stata richiesta l'attivazione di un nuovo account G-Suite di servizio tramite flusso in GAIA. Contestualmente è stata anche richiesta la possibilità di resettare la password dell'email di servizio sempre da GAIA.
Analisi
Abbiamo verificato le prassi comuni usate per raggiungere questo scopo e studiato l'interfacciamento API offerto dalla parte di amministrazione di Google.
Abbiamo verificato le librerie disponibili per astrarre le chiamate ai servizi di Google.
Abbiamo verificato come venivivano gestiti i contatti (indirizzi e-mail e numeri di telefono) in GAIA.
Cambiamenti
Abbiamo iniziato un helper per gestire le chiamate verso i servizi Google in maniera agevole da dovunque nel codice.
E' stato creato un file di configurazione adeguato dove riportare i setting necessari all'interfacciamento. E' stato scelto di non usare l'esistene apis.cfg perchè abbiamo ritenuto la parte G-Suite autoconsistente.
E' stato aggiunto un attributo email_servizio all'oggetto Persona.
E' stata aggiunta una property all'oggetto Persona che prova ad estrapolare la regione dalla sede di riferimento d'appartenenza.

Se questa valorizzazione fallisce non sarà possibile creare un indirizzo e-mail nel formato richiesto.
Sono state modificate le pagine home e contatti per gestire l'informazione all'utente che è possibile registrare o meno un nuovo indirizzo di servizio.
In particolare in contatti è stato inserito un nuovo blocco per la gestione dell'indirizzo di servizio: richiesta, visualizzazione, reset password.

Il campo non è modificabile dall'utente.
La creazione e il reset password generano una notifica e-mail all'utente con la password di generata all'interno. Gli utenti hanno l'attributo changePasswordAtNextLogin per forzare l'inserimento di una nuova password di sua scelta al login.
E' stata preparata un comando di management per valorizza_email_servizio (disponibile --dryrun) per copiare attuali e-mail di servizio nel campo nuovo.
Testing
Per questo tipo di sviluppo sono stati preparati i test test_email_contatto_no_servizio, test_email_servizio, test_aggiorna_email_servizio, test_email_servizio_candidata per validare il nuovo campo e il comando di management.
E' stato aggiunto un __main__ all'interno dell'helper per l'interfacciamento con Google per facilitare il test dei metodi locali che astraggono le chiamate alle API di Google.
E' stato testato via interfaccia utente il seguente flusso:
- utente senza e-mail di servizio:
login → verifico messaggio in home possibilità e-mail di servizio → click e vista contatti → richiesta e-mail → visualizzazione nuova e-mail → /tmp/mail contiene la notifica
- utente con e-mail di servizio (creata o migrata):
login → verifico assenza messaggio in home possibilità e-mail di servizio → click su link a vista contatti nel menu → richiesta reset e-mail → visualizzazione nuova e-mail → /tmp/mail contiene la notifica
related to #230