Questa azione è usata per amministrare le registrazioni utenti.
Un GET http ad adon.pl con questa azione richiama i dati utente nel DB e li pubblica nel modello specificato nel parametro RegistrationTemplate nel file Config.pm (es.: $Self->{'RegistrationTemplate'} = 'registrati').
Un POST http ad adon.pl con questa azione salva i dati utente nel DB e automaticamente lo autentica o meno in relazione al valore assunto dal campo definito in StateField, valore impostato nel parametro UserDefaultState della sezione UserTable di Config.pm.
I parametri accettati dalla query string:
Tutti i parametri nella query string o postati al motore vengono processati; tutti i parametri che hanno un campo con lo stesso nome in UserTable ->Map nel file Config.pm; tutti gli altri parametri saranno ignorati.
Output:
Con il metodo GET il valore di tutti i campi in UserTable sono pubblicati nel modello.
Dopo la sottomissione di una form con un metodo POST e se l'azione UserReg va a buon fine, l'utente verrà reindirizzato alla pagina definita nel parametro ThanksRegistrationPage del file Config.pm o, in assenza di questo, nel campo di input della form di tipo hidden denominato "referer".
Nel modello impostato nel parametro RegistrationTemplate, un campo chiamato RegistrationErrorMessages registra e visualizza i messaggi di errore nel processo di registrazione.
Form
Nella form di registrazione devono essere presenti alcuni campi di input "hidden", che indicano l'azione di Adon da eseguire (act), che sarà UserReg e la pagina alla quale si verrà portati dopo l'avvenuta iscrizione (referer).
Es.:
input name="act" type="hidden" value="UserReg"
input name="referer" type="hidden" value="/adon/static/grazie_reg.html"
File di Configurazione (Config.pm)Nel file di configurazione vanno impostati alcuni parametri.
In UserTableState si definisce il campo della tabella degli utenti che viene utilizzata per accogliere lo stato dell'utente, se attivo (V) o non attivo (N).
In UserDefaultState si imposta, invece, lo stato predefinito dell'utente appena terminata l'iscrizione.
In UserTypeField si definisce il campo della tabella degli utenti che viene utilizzata per accogliere il tipo di utente (di default "O")
Es.:
$Self->{'UserTableState'} = 'STATO';
$Self->{'UserDefaultState'} = 'N';
$Self->{'UserTypeField'} = 'TIPO_UTENTE';
Nel blocco $Self->{'UserTable'} di grande importanza sono le sezioni Map, RequiredFields, UniquesFields e PersistentFields. Analizziamo ciascuna di loro e il controllo che impongono sui parametri.
Sezione Map: deve contenere gli stessi campi che fanno parte della form di registrazione. Ricordare che i campi che non esistono nella struttura predefinita del DB vanno creati manualmente nella tabella degli utenti. La struttura di questo array è:
- nome del campo (come inserito nella tabella del DB)
- etichetta del campo in modalità di amministrazione (di default è uguale al primo parametro)
- etichetta del campo nella form del modello html (di default è uguale al primo parametro)
- tipo del campo di input (di default "text")
- dimensione massima del campo (di default "50")
Sezione RequiredFields: tutti i parametri in questa sezione sono processati e controllati usando l'espressione regolare collocata nel secondo elemento dell'array. La struttura di questo array è:
- nome del campo (come inserito nella tabella del DB)
- espressione regolare (perl regexp)
- messaggio di errore se regexp non sarà confrontato
Sezione UniquesFields: tutti i parametri in questa sezione devono essere unici in tutti i record della tabella del DB. I parametri di questa sezione sono automaticamente anche RequiredFields. La definizione dell'array in Config.pm deve essere:
- nome del campo (come inserito nella tabella del DB)
- messaggio di errore se la condizione non è verificata
Sezione PersistentFields: tutti i parametri in questa sezione sono disponibili in quasiasi azione di Adon; la struttura di questo array è:
- nome del campo (come inserito nella tabella del DB)
- il nome con il quale la variabile è richiamata all'interno dei modelli
Attivazione della registrazione
Nel caso in cui si decida che l'attivazione del nuovo utente non deve essere automatica, ma dipendere da una conferma da parte dell'utente stesso, si imposta il parametro UserDefaultState nel modo seguente: $Self->{'UserDefaultState'} = 'N'. A questo punto, dopo la registrazione, parte una mail verso l'indirizzo lasciato dall'utente, all'interno della quale gli si chiede di cliccare su di un link per attivare l'iscrizione stessa.
Perchè la mail parta si deve creare all'interno del blocco FormsToMail una sezione cui potremmo dare come key "Registrazione".
Un riferimento a questa sezione va collocato all'interno di UserTable, nel parametro WelcomeMailKey (es.: WelcomeMailKey => 'registrazione').
All'interno della sezione "Registrazione" del blocco "FormsToMail", vanno impostati alcuni parametri, tra i quali ricordiamo:
'MailToType' => 'param',
'MailToField' => 'email',
che impostano come destinatario della mail l'indirizzo lasciato dall'utente all'atto della registrazione e non un indirizzo fissato.
Il modello della mail di attivazione viene impostato con il parametro
'Template' => 'registrazione_mail',
e potrebbe avere una struttura del genere:
Benvenuto sul sito ***
NOME: [#$Userdata->{NOME}#]
COGNOME: [#$Userdata->{COGNOME}#]
E-MAIL: [#$Userdata->{EMAIL}#]
Clicca qui per completare la tua registrazione.
http://www.dominio.it/adon.pl?act=RegConfirm&uid=[#$Userdata->{SID}#]
Cordiali saluti
La redazione
I parametri ActivationThanksPage (in caso di riuscita) e ActivationErrorPage (in caso di mancata riuscita) definiscono i template di risposta all'operazione di attivazione della registrazione.
Altri parametri di rilievo
PasswordMinLength e PasswordMaxLength rappresentano rispettivamente la lunghezza minima e quella massima che deve avere la password.
UsernameMinLength e UsernameMaxLength rappresentano rispettivamente la lunghezza minima e quella massima che deve avere l'username.
UserCanChangeUsername indica la possibilità concessa all'utente di cambiare o meno il proprio username (0=no 1=sì).