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:

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.

questo pezzo mi sfugge ovvero dove e' il menui' impostazioni percorso url su drupal 6 ?

Non mi ricordo se è compreso nel core o è un'aggiunta di path-pathauto (questi moduli li aggiungo sempre). Quando inserisci un nuovo contenuto di tipo "page" hai la possibilità di modificarne il path? Se no, allora devi usare questi moduli...

Il tuo tutorial fa al caso mio, ma non riesco a farlo girare..

Il problema che mi si pone è questo: faccio tutto per filo e per segno, poi, quando testo se funziona vado alla pagina di registrazione, clicco su (ad esempio) azienda e mi da un errore 404, pagina non trovata. Come se il link ch edo (quello del punto 4) fosse sbagliato, non riesco a capire perchè, puoi aiutarmi?

Inoltre credo ci sia un errore al punto 9: gli url non dovrebbero essere (PreAutenticazione) user/register/profilepriv e (Azienda) user/register/profileaz?

Ottimo tutorial ma naturalmente c'è un problema. Al punto 5: 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). Ho impostato il nodo, che se ho ben capito è quello destinato a sostituire il default di drupal, poi per ogni tipo di profilo ho spuntato Attivato, spuntato il no di Default Registration Page, messo il path relativo es: user/register/profileaz, e salvato il tutto. Però ho notato con disappunto che le modifiche di cui sopra non hanno avuto effetto. In pratica non sono stati salvati i valori nel db. E infatti quando un utente anonimo clicca su Crea nuovo profilo non appare il nodo registrazione ma il default di drupal posizionato casualmente su uno dei due nuovi profili creati. Probabilmente la soluzione è una sciocchezza ma la sto cercando da due giorni senza successo. Puoi aiutarmi? Thks

Buonasera a tutti, ho seguito la guida e mi trovo nella stessa identica situazione di nexus.
Essendo un neofita volevo ripercorrere i passi da me seguiti per togliermi qualche dubbio e nella speranza che qualcuno di voi con un po' di tempo e molta pazienza riesca ad individuare l'errore da me commesso. Nel frattempo volevo chiedere a nexus se è riuscito a capire qual è il problema.

Chiedo scusa se sarò prolisso e ringrazio in anticipo coloro leggeranno il post.
Utilizzo le seguenti versioni:
- Drupal 6.22
- Email Registration 6.x-1.3
- Login Toboggan 6.x-1.10
- Auto Assign Role 6.x-2.0-beta1 (ho usato anche la versione stabile con le relative modifiche per risolvere i problemi che venivano fuori ottenendo
lo stesso identico risultato indicato sopra)
- Auto Nodetitle 6.x-1.2
- Content Profile 6.x-1.0
Premetto che nel sito dovranno registrarsi due tipologie di utenti Autori e Valutatori, ho quindi creato tre ruoli "utente pre-autenticato", "valutatore" ed "autore"; e due profili "Profilo Autore" e "Profilo Valutatore". Quì ho un dubbio: devo creare un profilo anche per l'utente pre-autenticato, anche se mi serve solo come ruolo da usare per il modulo Login Toboggan, in attesa che l'utente confermi la correttezza dell'email?
Un altro dubbio è se devo in serire nei due profili i campi email e password, per ora non li ho inseriti se è necessario lo faccio.

Ho abilitato tutti i moduli, in Gestione utente->Impostazioni utente ho selezionato solo "I visitatori possono creare profili e nessuna approvazione degli amministratori è richiesta" e modificato il testo dell'email "Benvenuto, non è richiesta nessuna approvazione" lasciando il resto invariato.
In Login Toboggan ho selezionato: attivato in "Allow users to login using their e-mail address" e nel blocco Registration ho lasciato disattivato "Use two e-mail fields on registration form", selezionato "Set password" ed utente pre-autenticato in "Non-authenticated role", ho fissato ad 1 giorno il "Delete unvalidated users after" infine ho selezionato "Immediate login", il resto è rimasto invariato.
Ho creato la pagina di registrazione che sostituirà quella di default fissando come indirizzo "registrazione".
Ho creato i due profili e per entrambi in Automatic title generation ho selezionato "Automatically generate the title and hide the title field", ho selezionato pubblicato in "Impostazioni del flusso di lavoro" e selezionato in Content Profile "Use this content type as a content profile for users". Nel tab Content Profile ho selezionato i seguenti elementi: "Display the full content", "Show a secondary tab below the user's edit tab", "Use on Registration", "Use on administrative user creation form", Hide form fields: "Other form elements (except for required CCK fields)", ed in "Use on Auto Assign Role paths" ho selezionato il path corretto per entrambi(in uno user/register/profilovalutatore e nell'altro user/register/profiloautore).
Nel modulo Auto assign role->Assign from Path, in User Register Node ho messo "registrazione" ma deve esserci qualche problema perchè qualunque cosa io scriva l'autocompletamento non funziona, e dopo aver salvato non rimane nulla. Nei due profili Autore e Valutatore ho selezionato Attivato ed in "Default Registration Page" ho messo No, in "Display Method" ho selezionato "Pages with no navigation" ed in Percorso a ciascuno l'indirizzo del corrispondente profilo. Per quanto riguarda l'utente pre-autenticato non l'ho attivato anche perchè non gli ho associato alcun profilo.
Infine in Gestione Utente->Permessi ho selezionato per l'utente anonimo e quello pre-autenticato i permessi di edit per tutti i campi inseriti nei due profili; i permessi di view per tutti i ruoli, ho selezionato "edit own profile content" per gli utenti autenticato e pre-autenticato, infine per il Valutatore ho selezionato "edit own profilovalutatore content" e per l'Autore "edit own profiloautore content".

Questo è tutto.
Scusate ancora se mi sono dilungato ma è un po' di tempo che cerco di far funzionare il tutto senza però riuscirci.
Spero nel vostro aiuto...grazie.