lunedì 28 febbraio 2011

Joomla 1.6: permessi e utenti (ACL)

Fra le novità più importanti di Joomla 1.6 abbiamo la nuova gestione dei permessi e degli utenti, in gergo tecnico ACL (Access Control Levels); in pratica in Joomla è possibile dare permessi per leggere, creare, modificare e cancellare determinate pagine a utenti o gruppi di utenti, a seconda del ruolo che essi hanno all'interno del sito web.

ACL in Joomla 1.6: Panoramica

Joomla 1.6: permessi e utenti ACL

Utenti

Lo User rappresenta evidentemente l'utente del sito web. Notiamo che un utente non deve essere necessariamente registrato in quanto potrebbe essere un utente pubblico (semplice navigatore). Ogni utente può essere assegnato a uno o più gruppi.

Permessi di base

I permessi di base rappresentano le operazioni che possono essere effettuate e sono assegnati al gruppo, non ai singoli utenti. (Se volete assegnarli a un singolo utente, dovrete creare un gruppo per quel determinato utente).
Le autorizzazioni di base includono:
  • Login al sito: la possibilità di accedere al front end del sito.
  • Admin login: la possibilità di accedere al back end del sito.
  • Admin: privilegi amministrativi, come la possibilità di cambiare la configurazione globale.
  • Gestione: la possibilità di cambiare le impostazioni delle estensioni.
  • Creare: la possibilità di creare un nuovo contenuto.
  • Cancellare: la possibilità di eliminare un contenuto.
  • Modifica: la possibilità di modificare tutti i contenuti esistenti.
  • Modifica stato: la possibilità di cambiare stato tra pubblicato, non pubblicato, cestino.
Le autorizzazioni di base si impostano da Configurazione Globale cliccando nella tabella Permessi.

Gruppi

Un gruppo è un insieme di utenti che hanno gli stessi permessi. Prendendo per esempio i gruppi di Joomla 1.5, un utente del gruppo publisher si può loggare nel front end del sito, creare nuovi articoli, modificare quelli già esistenti, renderli pubblici o annullare la pubblicazione. Tutti gli utenti del gruppo publisher hanno gli stessi permessi.
In Joomla 1.6, un utente può essere assegnato a più gruppi, per esempio nel gruppo publisher e nel gruppo administrator.
Ogni gruppo può avere dei sotto-gruppi che a loro volta si possono suddividere ancora andando a creare una gerarchia ad albero ben precisa. In pratica ogni gruppo ha il suo padre ad eccezione del Gruppo Public che è il livello più generale da cui discendono tutti gli altri.
E' possibile assegnare le autorizzazioni di base ai gruppi creati. Osserviamo che le autorizzazioni di base vengono ereditate tra i gruppi nel senso che i figli avranno di default i permessi dei gruppi padri. Chiaramente sarà possibile modificare il comportamento andando in Configurazione Globale -> Permessi. Notiamo però che non potrete ad esempio attivare un permesso che è stato espressamente disabilitato nel gruppo padre perchè questo andrebbe contro la relazione di dipendenza creata.
Un utente non registrato sul sito viene considerato appartenente al gruppo Public che avrà i permessi più leggeri.
Il gruppo Public e il gruppo Registered non possono essere eliminati al contrario di tutti gli altri gruppi. (Comunque, vi consiglio di tenerli, perchè danno un buon modello su come funziona l'ereditarietà delle autorizzazioni).

Livelli d'accesso

I livelli d'accesso sono relativi a che cosa uno o più gruppi di utenti possono vedere, nel front end del sito web. In sostanza, sono le autorizzazioni di lettura sul front end del sito.
Storicamente ci sono stati tre livelli di accesso: public (tutti possono vedere i contenuti), registered (si deve accedere sul sito per vedere i contenuti), special (bisogna avere un livello author o superiore per vedere il contenuto).
Questi livelli di accesso sono ancora presenti in Joomla 1.6 come default, ma si possono creare dei livelli d'accesso personalizzati.
I livelli di accesso non ereditano i permessi. Se si imposta un articolo visibile solo dai publishers, anche i super admin non potranno vederlo. (Comunque, con i permessi di super admin, si potrà modificare l'articolo dal back end).

In un prossimo articolo cercheremo di mettere in pratica questi concetti in un esempio reale.
lunedì 21 febbraio 2011

Factory Method Design Pattern C#

Riprendiamo oggi il nostro viaggio tra i Design Pattern: dopo aver visto l'Abstract Factory introduciamo ora il Factory Method che può essere visto come un caso più semplice. Ecco un diagramma UML di esempio:

Factory Method

Struttura di un Factory Method
  • Product: definisce l'interfaccia dell'oggetto creato dal factory method.
  • ProductOne e ProductTwo: implementano l'interfaccia di Product rappresentando i casi concreti.
  • Framework: dichiara il factory method (in questo caso makeProduct) che restituisce un oggetto di tipo Product a prescindere dal tipo concreto di prodotto; il Framework può in alcuni casi definire un'implementazione del factory method che ritorna un oggetto di default.
  • ApplicationOne: ridefinisce il factory method per restituire un'istanza di ProductOne
  • ApplicationTwo: ridefinisce il factory method per restituire un'istanza di ProductTwo

La classe Framework si affida alle sue sottoclassi per quanto riguarda la definizione del factory method, cosicché esso ritorni un'istanza appropriata del Product.
Il codice client tratta solo con l'interfaccia e con nessuna classe concreta.