Domanda: Joomla! sa che gli utenti appartenenti al gruppo Registered non sono tutti uguali? Nel caso non lo sapesse, facciamoglielo capire con una plugin!
Vi è mai capitato di creare una zona da far accedere a determinati utenti all’interno di un sito fatto con Joomla!, una zona per utenti registrati? Se ci provate vedrete che è facile ma cosa succede se volessimo diversificare gli accessi? Di suo Joomla! non permette di diversificare gli accessi: se definiamo una zona per utenti appartenenti al gruppo Registered, tutti coloro che vi appartengono vi possono accedere ma fino a qui ci va bene ma se avessimo un utente che appartiene a tale gruppo ma volessimo fargli accedere solo ad un sottoinsieme di questa zona, Joomla! non ci da alcun aiuto. Entra qui in gioco allora una plugin chiamata NOIXACL scaricabile dall’indirizzo http://joomlacode.org/gf/project/noixacl/. Grazie a questa plugin possiamo diversificare gli accessi al nostro CMS, definendo chi dei nostri utenti può vedere cosa sia a livello di menù, di contenuti e di moduli. Per farlo funzionare abbiamo bisogno di diversi file aggiuntivi in particolare, facendo riferimento alla versione 2.0.6 che è l’ultima disponibile:
Component: noixacl2.0.6.zip
Module: mod_mainmenu_noix.zip
Adapters: adapterAccess1.5.3.zip, adapterContent1.5.5.zip, adapterModulesv1.0.zip e menuAdapter1.5.1.zip
Se l’installazione del Component e del Module avviene dal menù di installazione interno di Joomla!, gli Adapters invece vanno installati da una apposita sezione del NOIXACL chiamata appunto Adapters, in cui si possiamo sia installarne di nuovi che eliminarne o disattivarli momentaneamente.
Una volta che abbiamo installato tutti i file su indicati ed averli anche attivati, andando dal menù Componenti (faccio riferimento alla versione italiana di Joomla!), visitiamo la voce Access Control, da cui andremo a definire tutti i livelli di accesso per tutti gli utenti. C’è da prestare attenzione che anche se stiamo lavorando come Administrator (o Super Administrator), una volta attivata la plugin dovremo definire anche per tale utente quali sono le zone (moduli, sezioni, categorie, menù, etc) che gli competono, altrimenti saremo bloccati e non potremo fare nulla: ad esempio se scriviamo un articolo all’interno di una categoria e sezione in cui non abbiamo il permesso di accedere, ci ritroveremmo con la spiacevole sorpresa che Joomla! ci negherà l’accesso, se invece abbiamo i giusti diritti di accesso, nessuno ci impedirà di accedervi.
Tornando al nostro caso di studio, poniamoci in questa situazione: il nostro sito ha una zona ulteriore che è visibile solo agli utenti registrati. In questa zona ci sono degli articoli che appartengono a diverse categorie e sezioni: tutti gli utenti registrati devono essere abilitati a vedere questi articoli ma c’è un utente – chiamato utenteX – che, per qualche motivo di policy aziendale, può vedere solo gli articoli di una sezione e della relativa categoria. Come fare? Joomla! di suo non permette tale distinzione, l’utenteX avrebbe ereditato gli stessi diritti degli altri utenti Registered ed avrebbe avuto accesso a tutto ma con NOIXACL il nostro utente potrà accedere solo a quel particolare elemento che specifichiamo. Per prima cosa dobbiamo creare un nuovo gruppo dentro cui andremo a collocare il nostro utenteX e per farlo agiamo dal menù Manage Groups: nel nostro caso abbiamo definito un gruppo chiamato colleghi ed impostiamo che erediti i diritti del gruppo Registered (figura 1).
Una volta che abbiamo creato il gruppo, dobbiamo assegnare quali utenti vi faranno parte: a noi interessa solo un particolare utente e nel caso in questione lo creiamo da zero dal menù Manage Users e gli assegniamo il gruppo colleghi (figura 2):
Torniamo al menù Manage Groups di NOIXACL, selezioniamo il gruppo colleghi e andiamo a scegliere a cliccare sulla voce content della sezione Adapters che si trova sulla sinistra. Mediante la voce content possiamo decidere quali parti del contenuto del nostro sito far accedere ai nostri utenti, sia nel backend che nel frontend: a noi in particolare interessa quello del frontend, ossia del lato visibile dall’utente che visita il nostro sito: cerchiamo la sezione di interesse, nel nostro caso la sezione chiamata area riservata ed assegniamo la visualizzazione della categoria moda (figura 3). Come si vede da tale figura, sulle altre categorie l’utente non ha alcun diritto. Non scordiamoci poi di rendere attiva, per ogni gruppo di utenti registrati (anche per l’administrator), la voce per effettuare il logout, altrimenti i nostri utenti non potranno scollegarsi, procedendo nello stesso modo visto in precedenza. Sinceriamoci che nel lato backend tutti gli utenti abilitati ad accedervi abbiano i diritti per accedere alle sezioni che compete loro, altrimenti saranno bloccati e questa è una cosa che non mi stancherò mai di ripetere perché è facile trovarsi a non capire come mai una volta Joomla! ci risponderà con il messaggio inquietante che non abbiamo i diritti per accedere a contenuti o altro.
Questa plugin nonostante abbia qualche bug si è dimostrata molto interessante ed utile e da tenere in considerazione quando abbiamo da gestire comportamenti diversificati per tipologie distinte di utenti registrati, il tutto in attesa che le prossime versione di Joomla! abbiamo un migliore supporto per la gestione utenti.