Telefono: +39 392 33 73 731

Contao: amministratori ed editori di contenuti

Quando si deve dare accesso al back-end di Contao è buona norma impedire che persone non autorizzate utilizzino gli strumenti di amministrazione (configurazione, moduli, generatore di form, templates e layout, ecc...). Potrebbero incautamente cambiare o eliminare parti estremamente importanti del sito, rovinando il lavoro di ore in pochi istanti.

Il controllo accessi di Contao è molto sofisticato, possiamo restringere i permessi degli utenti back-end per prevenire eventuali danni. Inoltre, disabilitando tutte le parti inopportune, semplifichiamo graficamente l'interfaccia, e aiutiamo queste persone a svolgere i loro compiti.
L'account di amministratore deve restare quindi solo in nostro possesso, per tutte le altre persone dobbiamo creare uno o più gruppi con le restrizioni adeguate, per esempio io creo di solito il gruppo "Gestori" o "Editori".

creare un gruppo editori in Contao


In base al caso specifico potrei concedere più o meno funzionalità, di solito io attivo la capacità di gestire gli articoli, le news, i file. Poi potrebbe esserci un calendario eventi, la newsletter, ecc...

files/blog/2013-03/gestione_file.png


Bisogna abilitare la gestione file altrimenti l'editore non potrà caricare alcun file, poi gli attivo la manutenzione, che serve a ripulire la cache e rigenerare le sitemap del sito. E' una cosa che l'addetto potrebbe fare periodicamente senza rischi.
Subito dopo queste impostazioni abbiamo i punti di inizio visualizzazione del sito, e di inizio visualizzazione dei file. Queste due opzioni servono per essere ancora più mirati nelle parti del sito che l'editore deve aggiornare, e stabilire quali cartelle di file può gestire (ovviamente gli escludo la cartella del template).

permessi gestione sito

permessi gestione file


Per le News e i Calendari le configurazioni sono simili, possiamo decidere quali archivi l'editore può gestire. Poi, se vogliamo che non abbia la possibilità di eliminarli (sarebbe grave se lo facesse) o ne crei di nuovi (inutilmente visto che non sarebbe in grado di preparare i moduli necessari per mostrarli sul sito), allora dobbiamo lasciare i checkbox "crea" ed "elimina" disabilitati come mostrato nelle figure che seguono. In questo modo l'editore può solo creare nuove news e nuovi eventi all'interno degli archivi già predisposti e assegnati.

permessi news

permessi calendario


La parte "tl_calendar" va lasciata vuota, in quanto non è possibile che lui crei nuovi calendari, mentre in "tl_calendar_events" e "tl_news" possiamo abilitare tutto. Guardando meglio abbiamo comunque la possibilità di disabilitare alcune opzioni, come la dimensione delle foto, o l'allineamento rispetto al testo, o l'id e CSS dell'elemento. Queste ed altre definzioni potrebbero essere rimosse per vietare all'editore l'intervento su alcune configurazioni.

Poi c'è la parte "tl_content" che riguarda gli elementi degli articoli, l'addetto non deve usarli tutti, ci sono elementi fondamentali come testo e galleria foto, ma ce ne sono altri che di solito non dovrebbe usare (codice, fisarmonica, tabella, link, modulo, form...). Nella figura successiva ho fatto una configurazione che elimina le parti che secondo me un editore normalmente non dovrebbe usare.

permessi content


Nota sul funzionamento di Contao
: il campo di selezione "tipo elemento" che troviamo nel back-end quando andiamo a creare i contenuti, continua a mostrare tutte le opzioni anche se da questa configurazione le abbiamo disabilitate. Se scegliamo un tipo non disponibile il sistema semplicemente restituisce una pagina bianca.

Secondo me questo comportamento non è del tutto corretto, sarebbe meglio togliere dal select le opzioni non desiderate. L'addetto in questo modo avrebbe solo le opzioni giuste e farebbe meno confusione, come mostro nella figura sottostante.

tipo elemento modificato


Per ottenere questo risultato possiamo installare il modulo "ce-access", lo uso da parecchio tempo ed è molto affidabile. In alternativa possiamo fare un intervento sul codice, è ciò che facevo prima di usare il modulo. Tramite FTP apriamo il file "system/config/dcaconfig.php" ed aggiungiamo il codice seguente.

 

if (TL_MODE == 'BE'){
if (!$this->User->isAdmin){
	
	// rimuovo dal select "tipo elemento" tutte le opzioni indesiderate e che riservo solo per l'amministratore 	
	unset($GLOBALS['TL_CTE']['texts']['headline']);
	unset($GLOBALS['TL_CTE']['texts']['list']);
	unset($GLOBALS['TL_CTE']['texts']['table']);
	unset($GLOBALS['TL_CTE']['texts']['accordion']);
	unset($GLOBALS['TL_CTE']['texts']['code']);
	unset($GLOBALS['TL_CTE']['links']['hyperlink']);
	unset($GLOBALS['TL_CTE']['links']['toplink']);
	unset($GLOBALS['TL_CTE']['media']['image']);
	unset($GLOBALS['TL_CTE']['media']['dlh_googlemaps']);
	unset($GLOBALS['TL_CTE']['includes']['article']);
	unset($GLOBALS['TL_CTE']['includes']['alias']);
	unset($GLOBALS['TL_CTE']['includes']['form']);
	unset($GLOBALS['TL_CTE']['includes']['module']);
	unset($GLOBALS['TL_CTE']['includes']['teaser']);
	unset($GLOBALS['TL_CTE']['includes']['comments']);
	
}
}

In pratica lo script controlla se l'utente è in BE (back-end), è importante farlo perché altrimenti succedono problemi di visualizzazione nel front end. Se l'utente è diverso dall'amministratore allora si applicano le rimozioni delle opzioni indicate in elenco. Per conoscere quali sono tutte le opzioni basta scrivere temporaneamente nel file dcaconfig.php il seguente codice.

 

print_r($GLOBALS['TL_CTE']);

/* Dovrebbe restituire un array simile a questo
   [texts] => Array
        (
            [headline] => ContentHeadlineTags
            [text] => ContentText
            [html] => ContentHtml
            [list] => ContentList
            [table] => ContentTable
            [accordion] => ContentAccordion
            [code] => ContentCode
        )

    [links] => Array
        (
            [hyperlink] => ContentHyperlink
            [toplink] => ContentToplink
        )

    [media] => Array
        (
            [image] => ContentImage
            [gallery] => ContentGallery
            [player] => ContentMedia
            [youtube] => ContentYouTube
            [dlh_googlemaps] => Content_dlh_googlemaps
        )

    [files] => Array
        (
            [download] => ContentDownload
            [downloads] => ContentDownloads
        )

    [includes] => Array
        (
            [article] => ContentArticle
            [alias] => ContentAlias
            [form] => Form
            [module] => ContentModule
            [teaser] => ContentTeaser
            [comments] => ContentComments
        )
 */

Il gruppo "Editori" è completato, la modifica del file dcaconfig.php è stata fatta. Ora rimane un'ultima cosa, se l'editore deve modificare le pagine del sito (come abbiamo deciso nel punto di visualizzazione pagine) allora dobbiamo segnalarlo nella Struttura del sito, altrimenti troverà disabilitate le icone di modifica, elimina, sposta articolo.
Apriamo quindi la root del sito (o la pagina del sito che vogliamo abilitare), accendiamo la sezione "Assegna permessi" e indichiamo sia il proprietario (in questo caso io come amministratore), sia il gruppo (gli editori) e rispettivi permessi.

files/blog/2013-03/permessi_struttura_sito.png

Questo è tutto, la mia è solo una dimostrazione di come si crea un gruppo del back end, con questo metodo si possono fare numerose altre configurazioni. Anche lo script in dcaconfig.php probabilmente si può migliorare, pescando dal database il gruppo di appartenenza e quindi fare opzioni più mirate (tuttavia consiglio di usare il modulo ce-access).

Mercoledì 27 Marzo 2013
(0 commenti)
PHP

Aggiungi un commento

Nome
E-mail (non verrà pubblicata)
Sito Web
Commento