MAXdev Italia
Manuale sui permessi ed autorizzazioni
<><>
Manuale sistema dei permessi di MDPro
Staff di MAXdev

Autorizzazioni: iniziamo

Bene, se voi ragazzi siete come me questo sistema di permessi è veramente complicato da utilizzare. Non semplice da utilizzare come Mutant ma sembra avere un mucchio di caratteristiche una volta che sai come utilizzarlo. Dopo essermi guardato in giro ho scoperto che parecchi di voi stanno cercando di fare la stessa cosa che sto cercando di fare io. Creare un sub admin per alcune parti del sito o avere un gruppo sub admin che fa la stessa cosa. Bene, queste sono alcune informazioni che vi daranno una mano

Una cosa da notare è che la cartella admin è localizzata nella cartella dei moduli.

Pensa, ad esempio, di avere un gruppo di persone da inserire in un gruppo sub admin. Questa è una guida passo passo.

Primo, crea un gruppo con un nome di tua scelta (esempio: subadmins, assistenza, qualunquecosa).

Aggiungi i membri che vuoi nel gruppo (esempio: John Doe, Jane Doe).

Ora che hai un gruppo devi assegnargli i permessi che vuoi. Supponi di volergli assegnare il permesso di aggiungere una storia nel sito proprio come farebbe l'amministratore.

Dovresti andare nel menu Amministrazione.

Cliccare su Autorizzazioni

Cliccare su Aggiungi Permesso di Gruppo

Per Realms, non fare niente.

Per Gruppo seleziona il gruppo che hai creato.

Per Componenti stiamo creando storie dovresti scrivere Stories:: (Questi sono visualizzati nella finestra di pop up quando clicchi su Componenti)

Per Istanza dovresti scrivere .*

Per Permessi dovresti selezionare Amministratore

Graficamente si ottiene:
  

Funzione

Impostazione

Cosa Significa?

Realms

All Realms

Non implementato ancora

Gruppo

ilgruppo

Impostazione dei permessi per thegroup

Componente

AddStory::

Utilizzo del modulo Stories

Istanza

.*

Il livello di permesso applicato a tutto in questo componente

Permesso

Amministratore

Il più alto livello di accesso

Ricorda, stai dando al sub admin TOTALE controllo su questo modulo.


Puoi dare permessi più specifici cambiando l'istanza.

    Esempio: Supponi di voler restringere l'accesso ai links nel tuo MenuP rincipale .Fai così:

Realms

All Realms

Gruppo

Subadmins

Componente

Menublock::

Istanza

Menu Principale:Amministrazione:

Permesso

Leggi

Supponi di avere un link a Jomama e non vuoi farlo vedere all'utente ''Paolino" selezionerò Paolino come utente e toglierò l'abilità di usare il link. Ad ogni altro utente il menu apparirà così:


  • Home
  • Il tuo Account
  • Jomama
  • News

Realms

All Realms

Utente

Paolino

Componente

Menublock::

Istanza

Menu Principale:Jomama:

Permesso

Nessuno

A "Paolino" il menu apparirà così::


     

  • Home
  • Il tuo Account
  • News

Se sei in grado di rielaborare questo file fallo pure.

Documento a cura di:

Unique1tt3 : unique1tt3@uswest.net Mr. Herald

Perché un nuovo sistema di permessi

"Verrà ulteriormente approfondito nelle FAQ ma è importante parlarne anche qui."

Un sistema di permessi a due livelli può andar bene in un semplice sito di news. Ci sono visitatori che leggono le notizie e amministratori che postano le notizie. Però in sistema di gestione di contenuti (CMS) sono necessari più livelli di sicurezza. Permettendo o negando l'accesso a determinate aree, il nuovo sistema dà al proprietario del sito un maggiore controllo e una migliore gestione dei propri contenuti.

Esempi:

Semplice Sito di News

Admin, Utenti Registrati, Guests

Sito Avanzato di News

Admin, Utenti Iscritti, Utenti Registrati, Guests

Semplice Sito Web Corporate

Admin, Clienti, Utenti Registrati, Guests

Sito Web Corporate Avanzato

Admin, Clienti Eleggibili per il Supporto, Clienti, Utenti Registrati, Guests

I gruppi

I gruppi di utenti sono quello che definiscono il nuovo sistema. Ogni utente può essere inserito in un definibile "gruppo" e poi all'intero gruppo può essere assegnato un set di permessi. Il sistema viene preconfigurato con due gruppi di utenti:

  • users
  • admins

Se stai upgradando da una vecchia versione di MDPro, PHPNuke, o myPHPNuke allora avrai anche un nuovo gruppo definito per ognuno dei permessi d'autore che avevi definito. Questi nuovi gruppi vengono creati ma devi impostare i loro permessi manualmente.

C'è anche un altro gruppo che non è un vero e proprio gruppo, esso è dato dai visitatori, cioè gli utenti non registrati che accedono al tuo sito. Questi sono definiti nel database con un UID di 0. Questi membri non registrati non vengono mostrati nel Gruppo di amministrazione però è come se appartenessere tutti al gruppo Utenti non Registrati. Tu puoi assegnare a questo gruppo qualunque tipo di permessi tu voglia -- da Nessuno ad Amministratore.

E' semplice dimenticare che i siti web hanno più che "visitatori". Poichè la linea che separa design e programmazione sul web si sta assottigliando molto, dobbiamo pensare i sito web più come dei software. I webmasters offrono un interfaccia ad un prodotto. Ogni "visitatore" è veramente un fruitore di un nostro servizio.Se noi pensiamo loro come degli utenti piuttosto che come dei visitatori la relazione diventa un po' più personale. E' incoraggiando gli utenti a diventare "Utenti Registrati" che le relazioni personali si costruiscono.

Realms

Realms

Ignorali. Essi non sono usati al momento. Il realm corrente è sempre 0. In ogni chiamata ad authorized(), assicurati che il primo parametro sia sempre 0.

Domande sulle autorizzazioni

1. A cosa serve il sistema dei permessi?
Il sistema dei permessi è disegnato per permettere agli amministratori del sito di proteggere il propiro contenuto e restringere le operazioni a qualunque livello desiderato. Per maggiori informazioni sui permessi consulta il manuale online di MDPro.

2. Non lo voglio!! Mi piaceva il modo in cui lavorava prima.
Il sistema dei permessi è impostato inizialmente in maniera tale da lavorare in maniera molto simile al vecchio MDPro. Per far diventare un utente un amministratore del sito è sufficiente andare sulla pagina di amministrazione dei 'Gruppi' e aggiungere l'utente al gruppo 'Admins'.

3. Perchè nel manuale dei permessi ci sono così tanti avvertimenti sul fatto di impostare i permessi correttamente?
Perchè modificando i permessi si potrebbe esporre il tuo sito al rischio che chiunque possa modificare, aggiungere o cancellare tutto il tuo contenuto!. Però, posto che tu abbia letto attentamente le istruzioni e non cambi i permessi già esistenti a meno che tu non sia sicuro di quello che stai facendo, questo non dovrebbe succedere.

4. Perchè gli utenti non possono accedere ai sondaggi fino a quando non effettuano il log in?
Perchè gli utenti non possono effettuare commenti alle storie fino a quando non effettuano il log in?
Il sistema dei permessi è impostato inizialmente in modo tale da permettere agli utenti non registrati il solo livello di accesso in lettura. Per permettere agli utenti non registrati di effettuare commenti ai vari elementi cerca nei permessi di gruppo una riga come questa: Non registrati .* .* Leggi e modificala in modo che dica Non registrati .* .* Commenti

5. Perchè ho bisogno di .*' alla fine dei miei permessi?
.*' è parte del sistema di espressioni regolari che il sistema usa e sta per 'qualunque cosa'. Questo segno è usato in molti permessi, da solo o con altro testo, per proteggere larghe aree piuttosto che un singolo elemento. L'uso più ovvio di questo segno è dato dal primo comando nei permessi di gruppo, che è: Admins .* .* Amministratore che dice: 'Tutti gli amministratori sono abilitati ad amministrare ogni cosa' Per un uso dettagliato di '.*' per permetter diversi tipi di filtri consultare le pagine del manuale online del sistema dei permessi. ** MDPro rimuoverà questa restrizone (di esplicitare '.*'), e 'Foo:' sarà la stessa cosa che 'Foo:.*', ma è meglio non mettere questa informazione nelle FAQ fino a quando non sarà ufficiale**

6. Qual è la differenza tra permessi utente e di gruppo?
I permessi di gruppo sono applicati a tutti gli utenti del gruppo in questione mentre i permessi utente sono applicati all'utente specifico. Inoltre i permessi utente sovrascrivono i permessi di gruppo. I permessi di gruppo dovrebbero essere usati in generale e i permessi utente solo quando un utente specifico ha necessità di fare qualcosa che contrasta con i permessi di gruppo.

7. Come posso aggiungere un sub-amministratore, al mio sito, che abbia accesso a certe funzioni e al menu di amministrazone delle stesse?
Primo, dobbiamo impostare due permessi, uno per modificare effettivamente una storia, un altro per permettere la visualizzazione del link di amministrazione nel 'Menu Principale'.
I seguenti permessi dovrebbero permettere questo;

 

Admins

.*

.*

Amministratore

SubAdmin

AddStory::| NomeModulo ::| NomeModulo ::

.*

Amministratore

SubAdmin

Menublock::

Menu Principale:Administration:

Leggi

All groups

Menublock::

Menu Principale:Administration:

nessuno

Sostituendo ' NomeModulo ' sopra con il vero nome del modulo al quale volete dare accesso al vostro sub-amministratore.

8. Come posso forzare gli utenti ad immettere login name e password nell'homepage? Dovremo cambiare il permesso di default per non permettere agli utenti non registrati di fare niente, così Non registrati .* .* Leggi diventa Non registrati .* .* Nessuno Poi permetteremo agli Utenti non Registrati di vedere il login box (dovremo permettergli di loggarsi da qualche parte :-) ), agiungendo Non registrati Loginblock:: .* Leggi assicurati di aggiungere questa riga PRIMA delle altre perchè le altre hanno una visibilità più alta di questa.

9. I livelli dei dei permessi sembrano lavorare in maniera gerarchica, es. Aggiungi è dopo modifica quindi se io dò il permesso di aggiungere l'utente può anche modificare. Però io voglio che esso sia in grado solo di aggiungere e non di modificare!! Come posso fare? Cheers, Jim. -- Jim ? McDonald - Jim@mcdee.net

10.Come faccio a fare in modo che un blocco di menu generico( ? MenuBlock?) non sia visibile agli utenti NON registrati?O almeno che non ci accedano?

Autorizzazioni per moduli

Autorizzazione per gli sviluppatori di moduli

Descrizione

Il nuovo sistema di autorizzazione di MDPro tiene conto del controllo a grana fine virtualmente sopra a tutti gli oggetti del sito. Questo documento spiega come integrare l'autorizzazione di MDPro nei tuoi moduli.

Settare Il Nome Del Componente

Un nome componente definisce unicamente una zona di controllo all'interno di MDPro. Come tale, dovresti aver cura di scegliere il vostro nome di componente in modo che non sia in disaccordo con qualunque altro nome di componente corrente e che questo sia chiaro per l'amministratore del sito (???)"che controlli componenti del vostro blocco" quando desiderano mettere il controllo di accesso su di esso.

Il componente consiste di tre parti, separate dai segni dei due punti (:). La prima parte dovrebbe essere il nome del modulo. La seconda parte attualmente è riservata e dovrebbe essere lasciata in bianco. La terza parte può essere una sottocategoria di vostro modulo, se è abbastanza complessa da garantirla (a meno che un modulo abbia un certo numero di zone che separate di funzione ,questo è improbabile).

Si noti che a volte un nome componente non è necessario. Un modulo che puramente funziona con il contenuto da un'altra parte del sistema userà appena il componente per quel contenuto. Inoltre, un modulo destinato per sostituire un modulo standard può mantenere lo stesso nome componente dell'originale. Ciò tiene conto per il rimontaggio di moduli drop-in con pochissimo sforzo da parte del mantenitore del sito.

Se il vostro modulo sta sostituendo un modulo attualmente esistente allora avete la necessità di regolare il nome componente. Se il vostro modulo lo sta puramente supplementando potete lasciare il vostro componente settando lo spazio in bianco

Scelta Dello Schema Di Istanza

Lo schema di istanza per il tuo modulo definisce il tipo di informazione contenuto-dipendente, che è usata per l'autorizzazione. Lo schema di istanza consisendi tre parti, separate dal segno di due punti (:). Le parti sono totalmente dipendenti dalle funzionalità del blocco e normalmente conterranno informazioni dinamiche.

Come esempio di schema di istanza, il tuo modulo potrebbe essere una galleria di immagini suddivise in categorie. In questo caso una possibile istanza potrebbe essere 'Nome immagine:Categoria immagine:Immagine ID'.

Nota come tutti i moduli standard di MDPro hanno uno schema di istanza già predefinito così che se vuoi lavorare con un contenuto integrato in MDPro devi utilizzare questi schemi. Non attenendoti a queste specifiche potresti causare confusione nel sistema d autorizzazione.

Configurare i tuo modulo per le Autorizzazioni

La prima cosa da fare, quando configuri un modulo, è annunciare uno schema di istanza. Per fare questo aggiungi una linea simile alla seguente al file version.php:

$modversion 'securityschema' = array('Gallery::' => 'Picture name:Category name: Picture ID');

L'array può contenere più elementi ma ogni elemento deve contenere un unico componente.

Poi, hai bisogno di proteggere tutte le operazioni con le rilevanti componente, istanza e livello di accesso. Questo viene fatto attraverso la chiamata authorised().

authorised() richiede quattro parametri. Essi sono: - realm: attualmente 0 - componente: descritto sopra - instanza: descritta sopra - livello di accesso: minimo livello d'accesso richiesto per l'autorizzazione.

I livelli di accesso sono i seguenti:

  • ACCESS_NONE Nessun Accesso
  • ACCESS_OVERVIEW Permesso di vedere un'anteprima del contenuto
  • ACCESS_READ Permesso di leggere il contenuto
  • ACCESS_COMMENT Permesso di aggiungere commenti al contenuto
  • ACCESS_MODERATE Permesso di moderare il contenuto
  • ACCESS_EDIT Permesso di modificare il contenuto
  • ACCESS_ADD Permesso di aggiungere il contenuto
  • ACCESS_DELETE Permesso di cancellare il contenuto
  • ACCESS_ADMIN Controllo Completo

Questi livelli di accesso sono cumulativi, quindi chi ha l'accesso in modifica lo ha anche in lettua, commento e moderazione.

Per esempio, il modulo Gallery autorizzerà la visualizzazione di un'immagine come segue:

if (authorised(0, "Gallery::", "$picname:$catname:$picid", ACCESS_READ)) { // Display picture

}

Controllare i Permessi Esterni

Il tuo modulo potrebbe aver bisogno di controllare dei permessi esterni per assicurare che fornisca le informazioni corrette. Un esempio di questo potrebbe essere un modulo che mostra una serie di tipi di storie al quale un utente potrebbe essere interessato. Il modulo dovrebbe controllare i permessi del componente 'Stories::' per ogni storia che vuole mostrare, per controllare che l'utente abbia gli opportuni permessi per vederla. Nota che è cruciale che in questi casi il modulo controlli anche la corretta istanza ogni volta.

Migliorare con la pratica

- controlla sempre i permessi ogni volta che ne hai bisogno. Non dare per scontato che i permessi controllati in un altra pagina web sono ancora validi. Questo ti assicura che cose come URL subverted non possano fare alcun danno. - controlla subito i permessi in bianco. Se un utente non ha il permesso di fare nulla con un modulo, individualo subito e non perdere tempo nel generare regole che non verrano usate. - usa le informazioni delle istanze dove occorre. Ciò permette un migliore e dettagliato controllo dei contenuti del sito da parte dell'amministratore e porta ad un sistema più flessibile. - lascia decidere alle autorizzazioni di sistema. Se devi, ad esempio, mostrare un link di un modulo amministrativo, chiedi alle autorizzazioni di sistema il permesso di mostrarlo in relazione al modulo che stai linkando piuttosto che al tuo stesso modulo.

Moduli di esempio

Molti dei moduli presenti nel sistema MDPro ufficiale usano questo sistema di autorizzazioni. Probabilmente il miglior esempio di modulo a cui guardare è quello delle News che contiene tutti gli elementi discussi in questo documento. In aggiunta, il

Esempi Autorizzazioni

Quando ottenete un funzionamento utile dei permessi aggiungetelo quì


Desidero lasciare alla gente anonima/non registrata di fare Commenti.

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Non registrato

AddStory::

.*

Commenta


Desidero lasciare vedere al mio amico Joey la gestione dei link.
Come permesso utente faccio:

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Joey

Menublock::

Menu Principale:Amministrazione:

Leggi


Ho cambiato il collegamento a Control in modo da cambiare il permesso a:

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Joey

Menublock::

Menu Principale:Control

Leggi


Spero che questo non sia insignificante. Da l'accesso Non registrato al sondaggio. È situato dopo la prima occorrenza di Non registrato|Menublock::|Menu Principale:(My Account|Logout|Submit News):|Nessuno.

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Non registrato

Sondaggi::

.*

Commenta

Ha modificato il permesso per l'esempio di scrutinio. Precedentemente è stato regolato per aggiungere il Commentao, questo è tutto di cui avete bisogno.


Mostrare soltanto il Waiting Content per l'amministratore, qui è come disabilitarlo per tutti gli altri:

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Non registrato

Menublock::

Menu Principale:Waiting Content:

Nessuno

: Nota bene che questo non funziona per me. Ho provato a mettere il waiting content in un blocco separato ma inutilmente, qualche aiuto?


Se voleste rendere determinati articoli disponibili soltanto ai gruppi specificati, potete fare così raggruppando gli articoli sotto una categoria specifica e dichiarando il permesso come segue:

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Non registrato

AddStory::

:Category Name:

Nessuno


Limitare gli articoli inviati da un autore specificato (uid 2 in questo caso) dall'essere visto dagli utenti anonimi:

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Non registrato

AddStory::

2::

Nessuno


Limitare un articolo specifico (sid 50 in questo caso) dalla lettura di un utente specifico (Bob in questo caso):

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Bob

AddStory::

::50

Nessuno

(usi interessanti!)


Gli anonimi possono votare nei sondaggi

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Non registrato

Sondaggi::

.*

Commenta


I membri di un sottogruppo possono aggiungere storie (questo magicamente aggiungerà un link per aggiungere storie nella pagina di admin del sottogruppo di utenti)

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

subgroup

AddStory::

.*

Aggiungi


Membri di un sottogruppo possono aggiungere sondaggi (Questo aggiungerà magicamente un link per aggiungere sondaggi nella pagina di admin del sottogruppo di utenti)

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

subgroup

Sondaggi::

.*

Aggiungi


Ciò fa in modo che la sezione di download sia disponibile solo per gli utenti registati, spero sia utile a qualcuno

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Non registrato

Downloads::

::3(questo è il donwload ID)

Nessuno


Io ho avuto un blocco HTML che ho cercato di far vedere agliu utenti non registrati e non a quelli registrati.
(il titolo del blocco era "Internet Access")
Usando MDPro

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Users

HTMLblock::

Internet Access::

Nessuno


Inoltre ho avuto un blocco html che ho fatto vedere solo agli utenti registrati:
(il titolo del blocco era "Stock Market")
Usando MDPro

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

Non registrato

HTMLblock::

Stock Market::

Nessuno


Settaggio per permettere soltanto a un gruppo specifico di vedere un particolare argomento:

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

specialgroup

Topics::Topic

specialtopic::

Commenta

Seguito da:

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

All Groups

Topics::Topic

specialtopic::

Nessuno

Se volete che solo gli utenti registrati possano leggere il testo esteso delle News inserite questo permesso

Gruppo: Non registrati

Componenti: AddStory::Story

Istanza: .*

Livello permessi: Nessuno


Il permesso deve essere inserito al primo posto per il gruppo Non registrati. 
 

Il vostro turno...

Realms

Utente/Gruppo

Componente

Istanza

Permesso

All Realms

 

 

 

 

Buona fortuna! - Steve (grape)


2003 ©  MAXdev Italia