Profili (e ruoli) diversi già in fase di registrazione con Content Profile e Auto Assign Role

Descrivo qua come ho affrontato il problema della registrazione sul portale che sto realizzando.
Si richiedeva potessero registrarsi due tipologie di utenti:

  • persona (privato cittadino, ecc.),
  • responsabile aziendale.

A seconda della scelta effettuata i campi da completare sarebbero risultati diversi. In particolare, con la seconda scelta, oltre ai campi per il profilo si doveva poter inserire sul portale l'azienda che l'utente rappresenta (e questa dovrà poi essere indicizzata per la ricerca).
L'utente (a qualunque profilo appartenga) doveva essere immediatamente loggato, visibile e con tutte le funzionalità; mentre l'eventuale azienda da questi inserita poteva essere visibile solo in seguito ad approvazione dalla redazione/amministrazione.

Sono stati dunque creati i seguenti ruoli per distinguere questi profili:

  • Azienda,
  • PreAutenticazione.

Moduli usati
I moduli utilizzati per raggiungere lo scopo sono stati:

  • Email Registration: usato per registrarsi e loggarsi con una email al posto di un nome utente. Lo username viene generato a partire dalla parte dell'email che precede la @. In caso due utenti abbiano lo stesso prefisso dell'email, il sistema assegna un numero progressivo. Lo username può comunque essere reso modificabile. Per farlo:
    Gestione utente > Permessi e assegnare il permesso "cambia il suo nome utente" all'utente autenticato,
  • Login Toboggan: grazie a questo modulo l'utente sceglie la password in fase di registrazione (non gli arriva per mail) e si trova loggato, apparentemente con tutti i diritti di un utente autenticato. In realtà se non convalida la propria mail (rispondendo alla stessa) entro un certo numero di giorni il suo account viene eliminato,
  • Auto Assign Role: permette all'utente di scegliere il proprio ruolo al momento della creazione dell'account,
  • Automatic Nodetitles: nasconde il campo titolo in fase di inserimento di un contenuto usando i token per riempirlo automaticamente,
  • Content Profile: Fondamentale! Usato per trattare i profili come fossero tipi di contenuto (o nodi) e avere quindi tutte le potenzialità di CCK. Inoltre fornisce la possibilità di associare profili diversi a ruoli diversi,
  • Content Profile User Registration: per rendere disponibili i content profile già in fase di registrazione utente.

Procedura
Passi da seguire:

  1. Installare ed abilitare i moduli appena elencati.
  2. Gestione utente > Impostazioni utente e selezionare l'opzione "I visitatori possono creare profili e nessuna approvazione degli amministratori è richiesta". In questo modo l'utente può scegliersi direttamente la password in fase di registrazione e si trova loggato prima di dover rispondere all'email. D'altra parte potrebbe avere inserito una mail falsa o scorretta e per ovviare a questo problema si usa il modulo Login Toboggan. Sostituire anche l'email di \textit{Benvenuto} con:

    !username,</li>
    grazie per esserti registrato su !site.
    Puoi ora effettuare l'accesso su !login_uri usando i seguenti nome utente e password:
    nome utente: !mailto
    password: !password
    È importante che confermi la correttezza dell'email facendo clic su questo link:
    !login_url
    SE NON LA AUTENTICHERAI IL TUO UTENTE SARÀ CANCELLATA ENTRO UNA SETTIMANA!
    --  Lo staff di !site

  3. Come detto, con questi passaggi si permette all'utente di essere subito loggato senza dover rispondere alla email. Per questo si suggerisce un ruolo cosiddetto "PreAutenticato" ("This will allow users to choose their initial password when registering. If selected, users will be assigned to the role below (PreAutenticazione appunto). They will not be assigned to the 'authenticated user' role until they confirm their e-mail address by following the link in their registration e-mail. Esiste, inoltre, un'opzione (sempre nella pagina delle impostazioni del modulo) per eliminare gli utenti che non confermano l'email entro un certo numero di giorni.
  4. Creare quella che si vorrà usare come pagina di disambiguazione per scegliere con quale ruolo e profilo registrarsi sul portale (privato o aziendale). Il tipo di contenuto sarà Pagina e il contenuto sarà qualcosa tipo:
  5. <strong>Pagina di registrazione (con scelta)</strong>
    Scegli se vuoi registrarti come
    <a href=user/register/profilepriv>PRIVATO</a>
    oppure come
    <a href=user/register/profileaz>AZIENDA</a>

  6. Nelle "Impostazioni percorso URL" togliere l'Automatic Alias e impostare a mano un percorso di primo livello (registrazione è un buon esempio, non lo è content/registrazione). Questo per non creare conflitti successivamente con Auto Assign Role.
  7. Dopo aver abilitato il modulo Content Profile si trova un nuovo tipo di contenuto Profile. Modificarlo come se fosse il Profilo di un utente privato. In particolare, noi ci troviamo nella situazione di avere due profili leggermente diversi per privato e responsabile aziendale (quest'ultimo dovrà ad esempio specificare anche il ruolo in azienda, un telefono o fax) e per questo creeremo due diversi tipi di contenuto Profilo Privato e Profilo Aziendale.
    Per questi due tipi di nodo che si vogliono usare come profilo si deve spuntare in fondo alla pagina del tipo di contenuto la voce: "Use this content type as a content profile for users". Solo in questo momento nella pagina compare una nuova scheda "Content Profile".
  8. Bisogna assegnare all'utente la possibilità di editare il proprio profilo e quindi in Permessi aggiungere per l'utente autenticato "edit own profile content". Inoltre, al momento della creazione profilo (quindi prima che l'utente sia autenticato) l'utente deve essere messo in condizione di poter modificare i campi del profilo e quindi i permessi di edit sui field del profilo vanno attribuiti anche agli utenti anonimi. Questa dunque è la parte più delicata; settare i permessi relativamente ai tipi di contenuto che dovranno gestire i vari ruoli.

    Quote:
    Suggerimento:
    Con il modulo Automatic Nodetitles si nasconde il campo titolo in una form.
    Il campo titolo è quello usato anche nell'url di quel nodo.
    Questo viene generato automaticamente a partire da un dato pattern.
    In ogni tipo di contenuto si trova, dopo aver abilitato questo modulo, una sezione "Automatic title generation"
    dove si può scegliere "Automatically generate the title and hide the title field".
    Per scegliere come generarlo si può scorrere la lista dei token disponibili (http://drupal.org/node/390482).

  9. Gestione Utente > Auto assign role > Assign from Path in User Register Node si inserisce la pagina che si vuole usare per sostituire la user/register. Mettere qui il nodo di tipo Pagina creato al punto 4. Per ognuno dei ruoli che si intende usare spuntare "Attivato". Come metodo "Pages with no navigation" ed inserire path diversi a ruoli diversi (ad esempio user/register/profilepriv e user/register/profileaz).
  10. Tornare nelle pagine dei tipi di contenuto nel tab Content Profile. La prima parte delle configurazioni è relativa a come vengono visualizzati i profili. Nella sezione User Registration aggiunta grazie al modulo Content Profile User Registration mettere le due spunte per usare i profili in fase di registrazione utente.
    In Use on Auto Assign Role paths lasciare la spunta solo sul ruolo desiderato, quindi su "(PreAutenticazione) user/register/profile" dal tipo di contenuto Profilo Privato e "(Azienda) user/register/ecocompany" dal tipo di contenuto Profilo Aziendale, ma anche dal tipo di contenuto Azienda.
  11. Ricontrollare i permessi assegnati ai ruoli in gioco in modo da evitare che un profilo possa modificare campi e contenuti che non gli competono.
  12. Per finire, in Costruzione del Sito > Temi > Configura > Impostazioni globali c'è la voce Mostra le informazioni del contenuto su e lì si toglie la spunta da tutti i tipi di contenuto nei quali non voglio venga visualizzata la scritta "Inserito da ... il ...".

Due moduli che potrebbero essere interessanti in questo contesto sono anche PageRoute e Real Name. Putroppo il primo non l'ho usato perché non sono riuscito a capire come integrarlo con quanto fatto, anzi non sono proprio riuscito a capire se sia compatibile con la fase di registrazione (lo era con Drupal 5 e il modulo Node Profile, ma sono portato a dire che da Drupal 6 Pageroute non sia utilizzabile in fase di registrazione). Real Name, invece, dovrebbe servire a sostituire, all'interno del portale, tutti i riferimenti all'utente con un field scelto dall'amministrazione (e quindi ad esempio un campo Nome_cognome al posto del prefisso dell'email).

Trackback nella mia sezione nel blog i-ware.

Argomenti: