Permessi base degli Utenti sulle Entità

Gestione base degli Utenti. Ruoli e Permessi sulle Entità. Limiti dei Permessi.
Dal Vocabolario: Contenuto, Tipo di contenuto
Aggiornata il:

Definiti i Tipi di Contenuto utili alla nostra app (ed eventuali altri tipi di Entità), prima di proseguire nella costruzione della app è opportuno stabilire chi può agire sui Contenuti  e cosa può fare su di essi. Rinviando la gestione degli Utenti ad una Guida più esaustiva, vediamo qui una configurazione minimale degli Utenti e dei loro Permessi sulle Entità della nostra app.

Creazione degli Utenti

In Drupal possiamo distinguere tre grandi famiglie di Utenti:

  • gli Amministratori
  • gli Utenti autenticati (o "registrati"), cioè gli Utenti dotati di nome utente e password e che quindi possono entrare nella app
  • gli Utenti anonimi o visitatori, cioè gli Utenti privi di nome utente e password e che quindi non possono entrare nella app ma solo consultare le sue pagine pubbliche 

Per costruire la app noi lavoriamo dentro Drupal come Amministratori. Gli Amministratori hanno tutti i poteri in Drupal, quindi non risentono di eventuali vincoli che valgono per gli altri Utenti. Per provare il corretto funzionamento della nostra app è quindi necessario interagire con essa come Utenti autenticati o Visitatori. A questo fine è utile definire nella app uno o più Utenti di prova, dando loro i permessi sulle Entità previsti dalla nostra app. 

Per creare un Utente:

  • vai in Persone e clicca Aggiungi Utente
  • digita email,  nome utente e password
  • disattiva Notifica l'utente del nuovo profilo
  • attiva Attivo e  Utente autenticato

Non è importante che email sia un indirizzo valido, a meno che tu stia provando funzioni che inviano mail. Definisci fin da subito una regola per la composizione dei nomi utente nella tua app, ad esempio nome.cognome  

Per la app di esempio, è opportuno definire due o tre Utenti di prova, perché la app prevede uno scambio di informazioni (Richieste, Prestiti, Messaggi) tra più Utenti

Per interagire con la app nei panni di questo Utente non Amministratore puoi:

  • aprire sullo stesso pc su cui stai costruendo come Amministratore la app un secondo web browser (attenzione: non una seconda finestra dello stesso web browser ma proprio un altro web browser; ad esempio se come Amministratore stai usando Chrome, per l'Utente di prova usa Edge), oppure
  • collegarti alla app da un pc diverso, oppure
  • installare uno dei moduli (es. Masquerade o User Switcher) che consentono all'Amministratore di impersonare temporaneamente un altro Utente, senza necessità di utilizzare un altro web browser o un altro pc 

Ruoli degli Utenti

In Drupal gli Utenti appartengono ad uno o più Ruoli. Il Ruolo definisce cosa può fare l'Utente in Drupal. Utente autenticato è il Ruolo base cui appartengono tutti gli Utenti dotati di nome utente e password. Gli Utenti con Ruolo Amministratore hanno tutti i poteri dell'Amministratore. E' possibile definire ulteriori Ruoli con Persone - Ruoli - Aggiungi ruolo.

Nella app di esempio, tutti gli Utenti hanno gli stessi poteri quindi non è strettamente necessario definire ulteriori Ruoli. Potremmo però aggiungere un Ruolo "Gestore" cui delegare alcune funzioni dell'Amministratore senza però dar loro tutti i poteri dell'Amministratore, ad esempio il potere di modificare e cancellare Contenuti altrui sbagliati.

Per assegnare o togliere un Ruolo ad un Utente:

  • va in Persone e clicca modifica sull'Utente
  • Nella pagina di modifica, attiva (o disattiva) i Ruoli

Permessi degli Utenti

Definito un Ruolo, per stabilire cosa possono fare gli Utenti appartenenti al quel Ruolo occorre modificare i Permessi di quel Ruolo:

  • va in Persone - Permessi: ti viene mostrata una tabella le cui righe sono i Permessi assegnabili e le colonne sono i Ruoli cui assegnarli
  • cerca il Permesso desiderato
  • attiva o disattiva l'incrocio tra la riga del Permesso e la colonna del Ruolo

Per la app di esempio avevamo stabilito che ogni Utente potesse aggiungere Attrezzi, Richieste, Prestiti e Messaggi e modificare o cancellare solo i propri Contenuti:

  • in Persone - Permessi, cerca "Attrezzo"
  • Per il Ruolo Utente autenticato attiva "Crea nuovo Attrezzo", "Elimina i propri Contenuti", "Modifica i propri Contenuti" lasciando disattivate le altre righe:
  • ripeti l'operazione per "Richiesta", "Prestito" e "Messaggio"

Se definissimo un Ruolo "Gestore" potremmo attivare per esso anche i Permessi di modifica e cancellazione dei contenuti altrui. 

Limiti dei Permessi

L'assegnazione dei Permessi ai Ruoli è un meccanismo molto semplice e potente per autorizzare o negare azioni degli Utenti sulle Entità e sulle funzioni di Drupal. L'installazione di moduli aggiuntivi può aggiungere ulteriori Permessi assegnabili. Questo meccanismo presenta però alcuni limiti, che risulta già evidenti nella costruzione della app di esempio e che potresti riscontare anche nelle tue app.

Un primo limite è che non esiste un Permesso per nascondere un tipo di Contenuto ad un Ruolo: esiste solo un Permesso che autorizza o proibisce la visualizzazione di tutti i Contenuti (non importa il tipo né l'Autore), che è usato normalmente per nascondere tutti i Contenuti di un sito ai Visitatori. 

Un secondo limite è che i Permessi agiscono su tutti i Contenuti di un tipo, senza possibilità di definire Permessi a livello di singolo Contenuto o - meglio ancora - sul singolo Contenuto in base ai suoi Campi: nella app di esempio, non possiamo quindi nascondere una Richiesta (o un Prestito o un Messaggio) agli Utenti diversi dall'utente che chiede in prestito l'attrezzo e dall'utente che lo presta.

Come spesso accade in Drupal, ciò che non è possibile fare con i moduli base può diventare possibile installando un modulo aggiuntivo: vedremo più avanti moduli che consentono di assegnare uno o più Contenuti a più Utenti o a interi Gruppi di Utenti, specificando in dettaglio i Permessi di creazione, visualizzazione, modifica e cancellazione. Per ora, nella app di esempio utilizzeremo una tecnica di nascondimento dei Campi dei Contenuti basata sulle Viste, senza necessità di installare ed imparare altri moduli.