Eventi di login
copia linkTrascrizione
Scopriamo qualche informazione in più legata alle fasi di partenza dell’applicazione web: all’avvio di una nuova sessione applicativa, è obbligatorio, negli eventi di Startup, assegnare alla proprietà UserRole dell’applicazione un valore tra quelli presenti nell’applicazione ed identificati come Ruoli.
Gli eventi di Startup a cui è possibile sottoscriversi sono 3: evento Initialize, evento OnLoginEvent ed evento AfterLogin: solo due di questi eventi sono utili per poter assegnare un ruolo di accesso: l’evento Initialize e OnLoginEvent; nell’evento AfterLogin ormai siamo nell’applicazione e possiamo aprire videate o eseguire procedure automatiche.
Analizzando l’avvio di una applicazione scopriamo che quando l’applicazione sarebbe pronta viene emesso l’evento Initialize: si esattamente come vi ho detto, in teoria, l’applicazione è pronta per inviare al client tutte le istruzioni di costruzione dell’interfaccia grafica e a ricevere comandi dall’utente, ed invece emette l’evento Initialize e verifica che nel codice sia stata valorizzata la proprietà UserRole.
In caso positivo l’intera interfaccia viene costruita ed è quindi possibile utilizzare l’applicazione, in caso negativo (cioè quando la proprietà userrole non viene valorizzata) l’applicazione rimane in sospeso e al suo posto viene visualizzata una pagina di login. Con tutte le volte che abbiamo eseguito insieme l’applicazione in questi tutorial, come è stato possibile non vedere mai la pagina di login? Semplice, per impostazione predefinita in tutti i nuovi progetti, nell’evento Initialize è sempre presente una riga di codice che assegna il ruolo Amministratore alla proprietà UserRole.
Cancelliamo questa riga di codice e proviamo ad eseguire.
Non assegnando un valore a userrole, viene mostrata la pagina di login: inseriamo delle credenziali qualsiasi e comunque vedete che si riesce ad accedere! Come è possibile? Semplice alla conferma nella pagina di login viene emesso un evento applicazione denominato OnLoginEvent: se guardiamo la sottoscrizione dell’evento troviamo ancora una volta la valorizzazione automatica della proprietà UserRole (quindi per questo motivo siamo riusciti ad accedere con qualsiasi credenziale).
Cancelliamo anche queste due righe e riproviamo:
Adesso basta non riusciamo più ad accedere, perché in entrambi gli eventi Initialize e OnLoginEvent non c’e’ una valorizzazione della proprietà UserRole e quindi non si accede!
Cambiamo il codice controllando nell’evento OnLoginEvent le credenziali inserite nella pagina di login (come notate sono riportati come due parametri nell’evento): tra l’altro a tale scopo abbiamo già previsto un metodo, un metodo statico della classe Utente denominato checkLogin dove passiamo username e password e riceviamo null se le credenziali non sono corrette oppure il documento Utente se sono corrette. Nel caso vi interessi conoscere i dettagli del metodo checkLogin, vi invito a riguardare il tutorial Caricare un documento in memoria della sezione precedente Scriviamo del codice.
Event OnLoginEvent
Utente docUtente = null;
docUtente = UTENTE.checkLogin(Username, Password)
if (docUtente != null)
userRole = docUtente.RUOLO
DataValid = true
Else
setLoginMessage (“Accesso non consentito”)
Mandiamo in esecuzione.
Adesso che ci penso ci siamo fregati con le nostre stesse mani: come facciamo ad accedere all’applicazione, se la tabella Utenti è vuota ? Non riusciamo di certo ad accedere senza utenti.
Torniamo al progetto e direi che potremmo bypassare il problema così: nell’evento Initialize controlliamo quanti record contiene la tabella Utenti; con zero record valorizziamo UserRole ad Amministratore così riusciamo ad accedere, se invece troviamo dei record non valorizziamo e passerà alla pagina di login.
Evento Initialize: Select count(*) From Utenti.
Controllo la mia base dati, la tabella Utenti: Tasto destro Wizard => Mostra dati (un metodo veloce per fare una query e controllare se c’e’ all’interno qualche cosa); qui abbiamo in teoria un utente che è Rossi Bianchi (in teoria è utente di tipo amministrativo), potremmo accedere con le credenziale di Rossi bianchi, io provo a fare faccio rossi rossi (sperando di aver mantenuto le credenziali allo stesso modo). Mando in esecuzione.
Possiamo provare ad accedere (come username rossi come password impostiamo rossi) e accediamo (ovviamente rossi rossi Chrome si lamenta un po’ per la password molto semplice, ma va bene così): siamo riusciti ad accedere.
Proviamo a creare nella tabelle Utenti un’altra utenza (facciamo un Neroni Paolo, Paolo Paolo ) dobbiamo assegnare un ruolo come Operatore e salvare, proviamo ad accedere riavviando l’applicazione, quindi chiudo e ricompilo.
Ecco di nuovo riproviamo Paolo Paolo e riusciamo ad accedere:
Ecco se non vogliamo tutte le volte chiudere l’applicazione e riavviare quando premiamo il pulsante di chiusura dell’applicazione potremmo dire di tornare alla pagina di login: questa è una impostazione (torno nel progetto) che possiamo trovare sull’applicazione: Tasto destro Wizard => Configura parametri. Alla voce Generale abbiamo la voce Pagina di logoff: lasciare vuoto se non si vuole il pulsante, impostare a “???” per tornare alla pagina di login; quindi potremmo inserire “???” così quando l’utente chiude l’applicazione torna alla pagina di login. Salvo.
Pagina di login che ovviamente contenuta nel template grafico, ma è completamente modificabile, con alcune accortezze perché è una pagina HTML particolare però riusciremo a renderla idonea al nostro applicativo: qualche informazione ve la darò nel tutorial successivo
Gli eventi di Startup a cui è possibile sottoscriversi sono 3: evento Initialize, evento OnLoginEvent ed evento AfterLogin: solo due di questi eventi sono utili per poter assegnare un ruolo di accesso: l’evento Initialize e OnLoginEvent; nell’evento AfterLogin ormai siamo nell’applicazione e possiamo aprire videate o eseguire procedure automatiche.
Analizzando l’avvio di una applicazione scopriamo che quando l’applicazione sarebbe pronta viene emesso l’evento Initialize: si esattamente come vi ho detto, in teoria, l’applicazione è pronta per inviare al client tutte le istruzioni di costruzione dell’interfaccia grafica e a ricevere comandi dall’utente, ed invece emette l’evento Initialize e verifica che nel codice sia stata valorizzata la proprietà UserRole.
In caso positivo l’intera interfaccia viene costruita ed è quindi possibile utilizzare l’applicazione, in caso negativo (cioè quando la proprietà userrole non viene valorizzata) l’applicazione rimane in sospeso e al suo posto viene visualizzata una pagina di login. Con tutte le volte che abbiamo eseguito insieme l’applicazione in questi tutorial, come è stato possibile non vedere mai la pagina di login? Semplice, per impostazione predefinita in tutti i nuovi progetti, nell’evento Initialize è sempre presente una riga di codice che assegna il ruolo Amministratore alla proprietà UserRole.
Cancelliamo questa riga di codice e proviamo ad eseguire.
Non assegnando un valore a userrole, viene mostrata la pagina di login: inseriamo delle credenziali qualsiasi e comunque vedete che si riesce ad accedere! Come è possibile? Semplice alla conferma nella pagina di login viene emesso un evento applicazione denominato OnLoginEvent: se guardiamo la sottoscrizione dell’evento troviamo ancora una volta la valorizzazione automatica della proprietà UserRole (quindi per questo motivo siamo riusciti ad accedere con qualsiasi credenziale).
Cancelliamo anche queste due righe e riproviamo:
Adesso basta non riusciamo più ad accedere, perché in entrambi gli eventi Initialize e OnLoginEvent non c’e’ una valorizzazione della proprietà UserRole e quindi non si accede!
Cambiamo il codice controllando nell’evento OnLoginEvent le credenziali inserite nella pagina di login (come notate sono riportati come due parametri nell’evento): tra l’altro a tale scopo abbiamo già previsto un metodo, un metodo statico della classe Utente denominato checkLogin dove passiamo username e password e riceviamo null se le credenziali non sono corrette oppure il documento Utente se sono corrette. Nel caso vi interessi conoscere i dettagli del metodo checkLogin, vi invito a riguardare il tutorial Caricare un documento in memoria della sezione precedente Scriviamo del codice.
Event OnLoginEvent
Utente docUtente = null;
docUtente = UTENTE.checkLogin(Username, Password)
if (docUtente != null)
userRole = docUtente.RUOLO
DataValid = true
Else
setLoginMessage (“Accesso non consentito”)
Mandiamo in esecuzione.
Adesso che ci penso ci siamo fregati con le nostre stesse mani: come facciamo ad accedere all’applicazione, se la tabella Utenti è vuota ? Non riusciamo di certo ad accedere senza utenti.
Torniamo al progetto e direi che potremmo bypassare il problema così: nell’evento Initialize controlliamo quanti record contiene la tabella Utenti; con zero record valorizziamo UserRole ad Amministratore così riusciamo ad accedere, se invece troviamo dei record non valorizziamo e passerà alla pagina di login.
Evento Initialize: Select count(*) From Utenti.
Controllo la mia base dati, la tabella Utenti: Tasto destro Wizard => Mostra dati (un metodo veloce per fare una query e controllare se c’e’ all’interno qualche cosa); qui abbiamo in teoria un utente che è Rossi Bianchi (in teoria è utente di tipo amministrativo), potremmo accedere con le credenziale di Rossi bianchi, io provo a fare faccio rossi rossi (sperando di aver mantenuto le credenziali allo stesso modo). Mando in esecuzione.
Possiamo provare ad accedere (come username rossi come password impostiamo rossi) e accediamo (ovviamente rossi rossi Chrome si lamenta un po’ per la password molto semplice, ma va bene così): siamo riusciti ad accedere.
Proviamo a creare nella tabelle Utenti un’altra utenza (facciamo un Neroni Paolo, Paolo Paolo ) dobbiamo assegnare un ruolo come Operatore e salvare, proviamo ad accedere riavviando l’applicazione, quindi chiudo e ricompilo.
Ecco di nuovo riproviamo Paolo Paolo e riusciamo ad accedere:
Ecco se non vogliamo tutte le volte chiudere l’applicazione e riavviare quando premiamo il pulsante di chiusura dell’applicazione potremmo dire di tornare alla pagina di login: questa è una impostazione (torno nel progetto) che possiamo trovare sull’applicazione: Tasto destro Wizard => Configura parametri. Alla voce Generale abbiamo la voce Pagina di logoff: lasciare vuoto se non si vuole il pulsante, impostare a “???” per tornare alla pagina di login; quindi potremmo inserire “???” così quando l’utente chiude l’applicazione torna alla pagina di login. Salvo.
Pagina di login che ovviamente contenuta nel template grafico, ma è completamente modificabile, con alcune accortezze perché è una pagina HTML particolare però riusciremo a renderla idonea al nostro applicativo: qualche informazione ve la darò nel tutorial successivo
Ultima modifica: 23/03/2021 / Validità: da 20.5.8000