Permessi assegnati ai Ruoli
La protezione base offerta da Drupal utilizza i Permessi per concedere o negare ad un Ruolo (e quindi agli Utenti che hanno quel Ruolo) le operazioni CRUD (Create Read Update Delete), cioè la possibilità di creare, vedere, modificare ed eliminare i Contenuti di un certo tipo. Abbiamo già visto come creare i Ruoli e come assegnarli agli Utenti; vediamo ora come assegnare i Permessi ai Ruoli.
Visualizzazione (Read): esiste un solo Permesso Visualizza contenuti pubblicati, che vale per tutti i Tipi di Contenuto: negando questo Permesso ad un Ruolo si impedisce a tutti gli Utenti con quel Ruolo di vedere qualunque Contenuto. Due tipici casi in cui negare questo Permesso: (1) negare ai Visitatori l'accesso a tutti i Contenuti, per riservarli ai soli Utenti registrati (2) negare agli Utenti registrati l'accesso indiscriminato a tutti i Contenuti, per poi concederlo selettivamente agendo sui Permessi delle Viste o coi Worklow o con altri moduli, come vedremo più avanti. Ad esempio, nelle app "Miei Prestiti" e "Prestiti tra Vicini" spengo il Permesso Visualizza contenuti pubblicati per il Ruolo Utente Anonimo, per impedire ai Visitatori la visualizzazione delle informazioni contenute nelle app ai Visitatori.
Creazione (Create): esiste un Permesso Crea nuovo contenuto per ogni Tipo di Contenuto, che può essere concesso o negato ai singoli Ruoli. Ad esempio, nella app "Prestiti tra vicini" per limitare ai soli Gestori il potere di stabilire le Sedi in cui avvengono consegne di Oggetti e di abilitare gli Operatori nelle Sedi, concediamo il Permesso Crea nuovo contenuto su "Sede" e "Abilitazione" solo al Ruolo "Gestore" e lo neghiamo ai Vicini e agli Operatori.
Modifica (U): esistono due Permessi per ogni Tipo di Contenuto: il Permesso Modifica i propri contenuti consente all'Utente di modificare i Contenuti che ha creato, mentre il Permesso Modifica tutti i contenuti consente all'Utente di modificare anche i Contenuti creati da altri Utenti. Ad esempio, nella app "Prestiti tra Vicini" per consentire ad un Gestore di modificare le informazioni relative a Sedi e Abilitazioni inserite da altri Gestori, concediamo il Permesso Modifica tutti i contenuti su "Sede" e "Abilitazione" al Ruolo Gestore; nella stessa app, per impedire a un Vicino di intervenire su un Prestito altrui mantenendo il controllo sui propri Prestiti, al Ruolo "Vicino" sul tipo "Prestito" concediamo il Permesso Modifica i propri contenuti ma neghiamo il Permesso Modifica tutti i contenuti. Vedremo coi Workflow come gestire casi più complessi, in cui il Permesso di modifica varia nel tempo.
Eliminazione (D): come per la modifica, esistono due Permessi per ogni Tipo di Contenuto: il Permesso Elimina i propri contenuti e il Permesso Elimina tutti i contenuti.
Come concedere e negare Permessi ai Ruoli
La pagina Persone - Permessi presenta una tabella, in cui le colonne corrispondono ai Ruoli e le righe ai Permessi: attivando la casella si concede il Permesso al Ruolo, disattivandola lo si nega.
Limiti delle protezioni basate su Ruoli e Permessi
La protezione base offerta da Ruoli e Permessi può risultare insufficiente alla app che stai costruendo, perché:
- esiste un solo Permesso di visualizzazione per tutti i Contenuti, quindi non è possibile nascondere uno specifico tipo di Contenuto ad uno specifico Ruolo
- i Permessi assegnati ad un Ruolo su un tipo di Contenuto valgono per tutti Contenuti di quel tipo e per tutti gli Utenti che hanno quel Ruolo; non è possibile diversificare i Permessi per singolo Contenuto o singolo Utente
- I Permessi sono staticamente assegnati dall'Amministratore e non possono essere modificati né dagli Utenti né dagli eventi che occorrono nella app
- Ruoli e Permessi non consentono di suddividere gli Utenti in gruppi che condividono un insieme di Contenuti, nascondendole agli altri Utenti con gli stessi Ruoli; perciò non consentono di usare la medesima installazione di una app per diversi comunità o clienti (app multitenant).
Se per la app che stai costruendo questi limiti possono costituire un problema (ad esempio, lo sono per la app "Prestiti tra Vicini"), nelle prossime Guide troverai altri metodi per proteggere i Contenuti in modo più flessibile.