Limitare l'accesso ad una vista in Drupal 6

PROBLEMA. Supponiamo di avere creato delle viste che permettono la gestione degli utenti, dei termini della tassonomia e dei contenuti del proprio sito utilizzando il modulo views bulk operation (VBO). E' chiaro che sarà necessario limitare l'accesso a queste viste ad una ristretta cerchia di utenti / amministratori del sito web. Di base le viste sono accessibili a tutti gli utenti del sito, anonimi compresi; questo crea una potenziale situazione di rischio sicurezza per il sito web, in quanto potrebbe esporre contenuti privati (si pensi ad esempio ai dati utente) a chiunque sia a conoscenza dell'indirizzo della pagina web di amministrazione creata con la vista.

SOLUZIONE. I permessi di accesso in Drupal possono essere regolati con un alto tasso di granularità. Ad esempio, se si creano dei contenuti personalizzati con il modulo CCK, è possibile utilizzare il modulo content_permission per regolare gestire i permessi per singolo campo. Nel caso delle viste, esiste la possibilità di limitare l'accesso della vista utilizzando i permessi od i ruoli di Drupal.

Nella pagina di configurazione della singola vista è possibile restringere l'accesso utilizzando la relativa voce nella sezione "Impostazioni di base".

[filefield-description]

Come impostazione predefinita l'accesso è libero, e non vi sono restrizioni (Nessuno).

Selezionando l'opzione "Permesso", è possibile invece regolare l'accesso utilizzando i permessi di Drupal (pagina http://www.esempio.it/admin/user/permissions); questo significa che tutti gli utenti che avranno quel determinato permesso assegnato, potranno accedere al risultato della vista. Questa opzione offre chiaramente il più alto grado di precisione, perchè ad esempio nulla vieta di creare dei nuovi permessi ad hoc tramite un piccolo modulo e di utilizzare questi nuovi permessi per regolare gli accessi alle viste con la precisione voluta.

L'ultima opzione invece è "Ruolo" e consente di limitare l'accesso in base al ruolo assegnato allo specifico utente. Ad esempio questa opzione risulta comoda per disabilitare l'accesso a tutti gli utenti anonimi ed assegnarlo a tutti quelli registrati.

Regolare l'accesso ad una vista utilizzando l'opzione "Accesso" nella pagina di configurazione della vista è chiaramente un operazione out / out, ovvero o si visualizza il risultato della vista o non lo si visualizza. Se quindi fosse necessario limitare l'output o le funzionalità della vista in base al ruolo utente, o si utilizzano moduli diversi che regolano gli accessi ai singoli contenuti ad esempio per campo (come il suddetto content_permission) o si creano viste differenti da utilizzare in base al ruolo.

Segnalo infine una opzione nella pagina dei permessi di Drupal cui è necessario prestare la massima attenzione. Il modulo views (versione 6.x-2.x) offre 2 permessi configurabili: "accede a tutte le viste" e "gestione viste".

[filefield-description]

Se un determinato ruolo ha assegnato il permesso "accede a tutte le viste" allora quel ruolo potrà visualizzare i contenuti della vista indipendentemente da quello che è stato impostato nella pagina di configurazione della singola vista; in altri termini chi dispone di questo permesso visualizzerà tutte le viste ignorando le impostazioni di accesso configurate a livello della singola vista, un po' come accade per l'utente con UID 1.

Questo può essere utile ad esempio per creare un ruolo di amministratore del sito con accesso a tutte le viste, ma attenzione ad assegnare questo permesso ad altri ruoli, perchè così facendo questi potranno accedere a tutte le viste del sito, ignorando di fatto i permessi impostati sulla singola vista.