El sistema de permisos del Zikula

Una característica bàsica de les intranets és la personalització dels continguts. Cada usuari/ària, en entrar, veu una informació o una altra en funció del seu perfil.

En el Zikula, això es tradueix en l'aplicació de permisos a grups: un usuari/ària té accés a un element de la intranet en funció dels grups als quals pertany. Per exemple, si es desitja que els membres del grup Alumnat puguin veure les notícies de la categoria Comunitat, cal crear un permís a nivell de lectura per aquest grup i sobre aquesta categoria.

Els permisos són un dels punts forts del Zikula en el sentit que aporten un grau molt elevat de seguretat i flexibilitat. Malauradament, també són la part més complexa, motiu pel qual cal dedicar-los especial atenció.

La gestió dels permisos correspon als administradors de la intranet i s'ha de dur a terme cada vegada que es vol modificar la tipologia d'accés d'un o diversos grups d'usuaris. Per exemple, per donar accés al mòdul del fòrum o als formularis o per treure'l a una categoria de notícies.

D'això es desprèn que el control d'accés comprèn dos tipus d'accions: assignar usuaris a grups (la pertinença a grups proporciona o treu accés) i definir permisos (el que pot fer o no fer un grup es defineix amb permisos).

Un permís és un registre a la taula de permisos que conté quatre dades bàsiques:

  • Grup al que afecta el permís
  • Component
  • Instància
  • Nivell o grau d'accés

El nivell és el grau d'accés que es dóna al grup i té un valor d'entre nou possibles: sense accés, fullejar, lectura, comentari, moderació, edició, addició, esborrament i administració.

Aquests nivells defineixen una gradació que va des de la prohibició d'accés fins al control total, on cada un d'ells inclou tots els inferiors, és a dir, si es disposa d'accés de moderació, també es disposa de comentari, lectura i fullejar.

Aquests nou nivells són els que el Zikula defineix amb caràcter general però, la seva existència i, per tant, la possibilitat d'aplicar-los, depèn de cada mòdul o bloc. Per exemple, el mòdul de notícies no utilitza el nivell de moderació, per tant, si a un grup se li assigna aquest permís, en realitat el nivell assolit serà l'immediatament inferior, és a dir, el de comentari.

El Zikula no ofereix cap mecanisme per conèixer a priori els permisos definits per a cada mòdul, cosa que dificulta una correcta assignació. En aquest cas, l'única opció és escollir un nivell i verificar-ne el resultat. Si el resultat és un nivell inferior o superior a l'esperat, caldrà corregir-lo i repetir la comprovació.

Les dues dades bàsiques restants del permís, el component i la instància, serveixen per definir sobre quin dels elements que conformen la intranet actua el permís. Exemples d'elements són el bloc tauler, el mòdul de fòrums i l'opció reserves del menú d'usuari. Com veieu, el concepte d'element és molt ampli, fins al punt que un mòdul pot definir elements nous que, lògicament, només estaran definits dins de l'àmbit d'aquell mòdul.

Els components defineixen tipologies de control d'accés. En paraules més planeres: indiquen a quin tipus de mòdul o de bloc se li aplica el permís. Per exemple, a un bloc de menú avançat, a un mòdul de fòrums, a un mòdul d'agendes, etc. En el cas dels mòduls pot sonar una mica estrany, ja que només hi ha un mòdul de fòrums, un d'agendes, etc. El cas és, però, que funciona així.

Una manera de veure els components és com a paraules clau que només poden tenir uns valors molt concrets. Per tant, en el moment de crear un permís, cal consultar la taula de components i plantilles d'instància (més endavant la veureu) per obtenir les paraules clau que cal utilitzar.

Si es pren d'exemple el mòdul de notícies, s'hi pot limitar l'accés per categories o a tot el mòdul. Això és tradueix en els components Categories::Category i News::. Fixeu-vos que són paraules en anglès combinades amb els caràcters ::.

Alguns mòduls i blocs només tenen un component. Això vol dir que únicament accepten una tipologia de control d'accés. D'altres admeten diversos components, cosa que els fa més flexibles.

Els components poden contenir el caràcter *, que actua de comodí. D'altra banda, per indicar tots els components, es fan servir dues construccions especials :: i .*, que són equivalents.

Els literals :: i .* són equivalents i serveixen, exactament, pel mateix.

El darrer element que conforma un permís és la instància. La instància conté informació que identifica unívocament l'element al que afecta el permís. Si el component defineix un tipus d'element, la instància conté una dada addicional que permet saber a quin element, d'entre tots els que s'ajusten al component, fa referència el permís.

Si en el cas del component s'ha de copiar i enganxar un text de la taula de components i plantilles d'instància, en el cas de la instància s'ha d'agafar una plantilla d'instància i modificar-la.

Un exemple de plantilla d'instància és Block title::, que vol dir que s'ha d'introduir el nom del bloc, tal i com apareix a la intranet, seguit dels caràcters ::. Per exemple, per crear un permís que només afecti al bloc titulat Temes del tauler, la instància utilitzada seria Temes del tauler::.

Igual que el component, la instància accepta el caràcter comodí (*) i les construccions :: i .* per indicar totes les instàncies.

Aquest sistema de permisos, basat en grups, nivells, components i instàncies, és el mètode que ofereix el Zikula per controlar els accessos. Atès que es tracta d'un sistema complex, els mòduls IW implementen alternatives més senzilles. En aquests casos, el que cal fer és crear un permís de lectura per a tothom i, com a administrador/a, assignar els permisos des de dins de cada mòdul.

La taula de permisos

  • Accediu als permisos. Trobareu l'enllaç al menú horitzontal de la capçalera (Administració | Usuaris | Permisos). Entrareu a la interfície d'administració dels permisos.

Taula de permisos

Fixeu-vos que el menú horitzontal del mòdul té 3 opcions: Llista de permisos, Paràmetres i Informació dels permisos. Actualment us trobeu a la primera opció. Més endavant veureu que l'opció Informació dels permisos serveix per accedir a la taula de components i plantilles d'instància.

La taula de permisos té sis columnes.

  1. ID (no té títol): mostra entre parèntesis l'identificador intern del permís. És únic per a cada permís.
  2. Grup: permet indicar el grup al qual afecta el permís. Els usuaris que pertanyin a aquest grup es veuran afectats pel permís, mentre que als que no hi pertanyin, no els afectarà. Si es tria l'opció Tots els grups, el permís afecta a tothom. En canvi, l'opció No registrats serveix per referir-se als visitants que no han entrat, és a dir, que no han introduït correctament el nom d'usuari i la contrasenya.
  3. Component: indica el component sobre el que s'aplica el permís.
  4. Instància: indica la instància sobre la que s'aplica el permís.
  5. Nivell del permís: indica el grau d'accés que es concedeix.
  6. Accions: són enllaços que permeten editar un permís o comprovar-ne l'efecte sobre un determinat usuari/ària.
  • Feu clic a l'opció Informació del permisos del menú horitzontal del mòdul. S'obrirà una finestra emergent amb la relació de components i plantilles d'instància.

Taula de components i plantilles d'instància

El contingut de la columna Component registrat es trasllada literalment a la taula de permisos, mentre que la columna Plantilla d'instància s'ha de modificar per utilitzar dades de la intranet. Més endavant veureu exemples d'aplicació.

  • Tanqueu la finestra que s'ha obert i torneu a la taula de permisos.

La taula de permisos inicial de la maqueta és molt generalista i és probable que necessiteu fer-hi canvis. Així i tot, el més habitual és que es tracti de pocs canvis i que afecten a alguns grups.

La configuració predeterminada dóna accés de comentari a tot arreu a tots els usuaris i de lectura als no registrats. També permet que els membres del grup Professorat puguin assignar Quaderns Virtuals i activitats Clic i que puguin fer reserves.

Els permisos es poden organitzar com es consideri oportú, però cal tenir molt present que hi ha una seqüència d'aplicació: de dalt a baix. Això vol dir que per determinar si dos o més permisos entren en conflicte, preval el que està més amunt a la taula. Aquesta és la raó per la qual el primer permís és sempre el que dóna accés d'administració a tot arreu als membres del grup Administradors.

Els permisos s'apliquen de dalt a baix de la taula. En cas de que dos permisos se superposin, mana el que es troba més amunt.

El primer permís té el component i la instància amb el valor .*, cosa que fa que afecti a tots els elements de la intranet, i dóna el màxim nivell d'accés al grup Administradors, de manera que qualsevol usuari/ària que formi part d'aquest grup tindrà accés total a la intranet.

El segon permís fa possible que els membres del grup changingRole puguin accedir al bloc de canvi de rol. És necessari que estigui en segona posició per evitar que altres permisos el deixin sense efecte. El seu component és IWmyrole::, que és l'únic de que disposa aquest mòdul, i la instància és el comodí perquè cal que afecti a tots els blocs d'aquest tipus.

Els dos primers permisos de la llista no s'han de modificar mai ni s'ha d'alterar la seva posició.

Si aneu al final de la taula, el cinquè permís comptant des d'abaix dóna accés a tots els usuaris a tots els components i instàncies amb el nivell de comentari. Si voleu que un determinat grup no pugui accedir a una funcionalitat amb aquest nivell d'accés, haureu d'afegir un permís nou abans d'aquesta línia que hi impedeixi l'accés.

Cinquè permís comptant des d'abaix

Fixeu-vos que els administradors també s'haurien de veure afectats per aquest permís, atès que són usuaris de la intranet, i semblaria que només haurien de tenir accés de comentari. En canvi, tenen accés d'administració a tot arreu. La raó és que el primer permís de la taula els dóna accés d'administració i està més amunt a la taula.

El darrer permís de la llista dóna accés de lectura als usuaris no registrats a tots els components i instàncies. Com en el cas anterior, si desitgeu que els usuaris no registrats no puguin accedir a un determinat bloc, mòdul o funcionalitat, haureu de crear el permís que ho impedeixi i situar-lo abans d'aquesta línia.

La millor manera d'entendre com funcionen els permisos és analitzar a fons la taula predefinida a la maqueta. En aquesta mateixa pràctica hi teniu uns exemples que us poden ser molt útils per entendre com funcionen els permisos.

Filtratge de permisos per grups

Una característica molt pràctica dels permisos del Zikula és el filtratge per grups. Quan els membres d'un grup tenen problemes d'accés a un bloc o a un mòdul resulta molt útil aplicar un filtratge que mostri només els permisos que afecten aquest grup.

  • Aneu a la part superior dreta de la taula de permisos i localitzeu un menú desplegable amb el text Tots els grups.
  • Desplegueu el menú i seleccioneu l'opció No registrats.
  • Cliqueu a Filtre.

Filtratge de permisos

Heu obtingut una vista parcial de la taula de permisos on només apareixen els permisos que s'apliquen als usuaris que no han introduït un nom d'usuari/ària i una contrasenya vàlids, juntament amb el permís dels administradors, que està bloquejat. Els permisos que afecten a Tots els grups, també afecten als no registrats.

Vista filtrada

Per tornar a la vista de tots els permisos de tots els grups cal seleccionar Tots els grups del desplegable de filtratge.

  • Aneu al menú desplegable, seleccioneu Tots els grups i feu clic a Filtre.

El filtratge és molt pràctic per veure quins permisos afecten a un determinat grup.

Exemple d'aplicació de permisos: Denegar l'accés d'un grup a un bloc

Inicialment, la intranet proporciona, a tots els grups, accés de lectura a gairebé tots els mòduls i blocs. Sovint interessa que un determinat col·lectiu no tingui accés a algun mòdul o bloc. L'exercici següent il·lustra com treure l'accés al bloc Qui hi ha? a l'alumnat, tot mantenint-lo per a la resta de grups.

  • Aneu a l'administració dels permisos (Administració | Usuaris | Permisos).
  • Feu clic a l'enllaç Afegeix un permís nou ubicat just damunt la taula de permisos.

Enllaç de creació d'un permís nou

  • Després de fer clic, aneu a la part inferior de la taula de permisos i comproveu que apareix una nova fila que es pot editar. El grup seleccionat és el No registrats, el component i la instància són .* i el nivell d'accés és Sense accés.
  • Modifiqueu el permís amb aquests valors:
    1. A la columna Grup, seleccioneu Alumnat.
    2. A la columna Component indiqueu Onlineblock::. Comproveu que aquest valor apareix a la taula de components i plantilles d'instància.
    3. A la columna Instància escriviu .* (això vol dir "totes les instàncies").
    4. Al Nivell de permís seleccioneu Sense accés.

Dades del permís

  • Feu clic a la icona de creació del permís (icona de color verd).

El permís que acabeu de crear està al final de la taula i, per tant, és el darrer que s'intentarà aplicar. Com que tots els usuaris de la intranet pertanyen al grup Usuaris i existeix un permís amb component i instància .* sobre aquest grup, a la pràctica, el permís que acabeu d'afegir, de moment, no fa res.

Observeu la imatge. El permís amb ID 35 (el vostre pot tenir un ID diferent) és un subconjunt del permís amb ID 3. Això vol dir que tots els casos que contempla el permís amb ID 35 estan compresos, també, dins el permís amb ID 3. És així perquè tots els membres del grup Alumnat també ho són del grup Usuaris i, a més, el component .* és un comodí que significa "tots els components", cosa que inclou el component Onlineblock::.

Emmascarament de permisos

Com que el permís amb ID 3 està més amunt a la taula, s'aplicarà abans i com que inclou tots els casos afectats pel permís amb ID 35, sempre s'aplicarà el que digui el permís amb ID 3. En aquest punt, si entréssiu a la intranet amb un usuari/ària del grup Alumnat, seguiríeu veient el bloc.

Per aconseguir aquest permís actuï, cal desplaçar-lo a una posició més amunt que el permís amb ID 3.

  • Arrossegueu el permís que acabeu de crear (feu-hi clic a damunt i, sense deixar de prémer el botó esquerre, moveu el ratolí) per deixar-lo just a sobre del permís amb ID 3:

Posició del permís

Ara, com que el permís nou està més amunt a la taula, té preferència sobre l'altre. Comproveu que el permís nou està actuant correctament:

  • Sortiu de la intranet i entreu amb l'usuari/ària alum1. Des del bloc El meu rol podeu posar-vos en la pell de qualsevol usuari/ària, de manera que no és necessari sortir de la intranet i tornar-hi a entrar per fer comprovacions.
  • Desplaceu-vos fins a la part inferior de la pàgina i comproveu que no apareix el bloc Qui hi ha?

Si voleu tornar a la situació anterior només heu d'eliminar el permís que acabeu d'introduir. Per fer-ho, heu d'entrar a la intranet amb l'usuari/ària admin, accedir als permisos, clicar sobre la icona d'editar del permís i després sobre la icona d'eliminació d'aquest permís, ubicada a la columna Accions.

Recordeu que l'ordre dels permisos és important. La posició dins la taula marca la preferència d'un permís sobre els altres.

Permisos específics de les notícies

Els permisos de les notícies es controlen mitjançant dos components: News:: i Categories::Category. El primer fa referència al mòdul de notícies, mentre que el segon afecta al sistema general de categories del Zikula (notícies, pàgines i qualsevol altre contingut que es pugi classificar en categories).

El permisos definits amb Categories::Category només afecten a les notícies si aquest mòdul té activat l'ús de categories a la configuració del mòdul (comportament predeterminat).

A la configuració predeterminada dels permisos, cada grup està configurat per accedir només a algunes categories.

Inicialment, estan definides 6 categories: Alumnat, Professorat, AMPA, Comunitat, Informacions i No registrats. Cada una de elles té assignat un codi intern (ID) que es fa servir per aplicar els permisos.

ID Nom de la categoria Grups que hi poden accedir
10001 alumnat alumnat, professorat, direcció i famílies
10002 professorat professorat i direcció
10003 ampa direcció i famílies
10004 comunitat tots els grups excepte els no registrats
10005 informacions tots els grups inclosos els no registrats
10006 no registrats No registrats (usuaris que no han entrat)

El comportament indicat a la columna Grups que hi poden accedir (grup X que pot accedir a la categoria Y) s'aconsegueix amb la configuració de permisos de la taula següent. Si els permisos no existeixen es poden crear (cal respectar l'ordre):

Grup Component Instància Nivell de permís
Professorat Categories::Category (10001|10002)::Lectura
Direcció Categories::Category (10001|10002|10003)::Lectura
Editors Categories::Category :: Lectura
Alumnat Categories::Category 10001::Lectura
Famílies Categories::Category (10001|10003)::Lectura
Usuaris Categories::Category (10004|10005)::Lectura
No registrats Categories::Category10006::Lectura
Tots els grups Categories::Category::Cap
Tots els grups Categories:: ::Lectura

Aquests permisos han d'estar, necessàriament abans dels permisos següents:

Grup Component Instància Nivell de permís
Usuaris .* .* Comentari
No registrats .* .* Lectura

El sistema de permisos és una eina molt versàtil, però també molt complexa, per això, el seu aprenentatge és lent. Amb l'experiència aprendreu a treballar-hi amb rapidesa i efectivitat.