Comprendre les droits et niveaux d'accès de Joomla!

1 vues
09 août 2016
Cyril
badge-controle-access

 

Question abordée lors de nos formations sur le CMS Joomla! comment fonctionnent les droits ? On désigne dans un premier temps par le mot "droits" tout ce qui définit ce que les utilisateurs (en front ou en back office) peuvent voir et faire sur le site. Nous allons découvrir qu'il faut faire une distinction importante.

Principes de base avec Joomla!

Avec le CMS Joomla! on distingue en effet ce qu'on peut voir (les niveaux d'acces ou ACL -Access Control Lists- en anglais) de ce qu'on peut faire (les droits à proprement parler).

Ces deux notions sont très différentes et sont gérées en des endroits très différents du back office. Pour autant elles tirent toutes les deux leur origine dans la définition des groupes d'utilisateurs.

droits acl joomla groupes droits acls


Joomla! et les utilisateurs: les groupes

Les utilisateurs dans Joomla! sont des comptes qui peuvent se connecter en front ou en back office. Il existe aussi l'utilisateur 'invité' qui regroupe tout internaute qui visite le site sans se connecter.

Un utilisateur possède un identifiant et un email unique. Il appartient aussi à au moins un groupe d'utilisateurs (il peut faire partie de plusieurs groupes).

La notion fondamentale pour comprendre les niveaux d'accès et les droits de Joomla! est cette notion de groupe. Dans 99% des cas on ne va pas attribuer de droits ou de niveau d'accès à un utilisateur isolé mais à un groupe. L'utilisateur hérite des droits et des niveaux d'accès des groupes auxquels il appartient.

droits acl joomla groupes

On remarquera que les groupes sont rangés selon une hiérarchie qui prendra toute son importance dans la gestion des droits et des niveaux d'accès.

Les droits

Dans le menu Système / configuration et l'onglet DROITS on retrouve par groupe ce que les utilisateurs d'un groupent peuvent faire:

droits acl joomla config generale

C'est le point de départ pour cette matrice de droits qui va ensuite être surchargée dans les différents composants.

La hiérarchie des groupes définit un héritage des droits qu'on peut surcharger. La colonne 'droits appliqués' affiche le droit effectif pour le groupe sélectionné selon ce qui a été définit ici et aux niveaux supérieurs.

Les droits par composants

Une des grandes forces de la gestion de droits avec Joomla! reside dans son système de surcharge et d'héritage de la matrice de droits généraux composant par composant.

Ainsi pour le gestionnaire d'articles et de catégories (composant com_content) on retrouve cette matrice de droits au travers du bouton paramêtre
droits acl joomla droits articles


droits acl joomla droits articles detail


Ce même bouton Paramêtre se retrouve pour tous les composants (ou presque) de Joomla! Ainsi pour les menus on a aussi la matrice des droits par groupes.

droits acl joomla droits menus detail

Quand on regarde le détail de chaque droit pour chaque groupe on voit que plusieurs valeurs sont possibles :

  • Hérité - les droits globaux (depuis le menu Système / configuration) ou ceux des groupes parents seront utilisés.
  • Refusé - prévaut toujours, quels que soient les droits globaux ou ceux des groupes parents, et s'applique aux éléments enfants.
  • Autorisé - le groupe concerné pourra effectuer cette action dans ce composant sauf si les droits globaux sont différents.

droits acl joomla droits valeurs

Les niveaux d'accès (ou ACL)

Les niveaux d'accès contrôle ce qui peut être vu par les utilisateurs de tel ou tel groupe. On doit les comparer à des badges qu'on remet à des visiteurs ou employés d'une entreprise sensible dans laquelle toutes les salles ne sont pas accessibles par tout le monde.

Au départ un niveau d'accès n'est qu'un nom qui est attribué à un ou plusieurs groupes:

droits acl joomla niveaux

Dans Joomla! toutes les ressources (articles, catégories, lien de menu, module, etc...) est affectée d'un ACL. A l'affichage de chaque page Joomla! compare les ACLs de chaque ressource (ou élément de la page) avec le niveau d'accès attribué à l'internaute au travers des groupes auxquels il appartient. Par exemple pour les modules :

droits acl joomla acl modules

ou pour les articles:

droits acl joomla acl articles

Remarque importante: On distingue l'accès PUBLIC qui désigne en fait tout le monde (qu'il soit enregistré ou non) de l'accès INVITE qui désigne les internautes uniquement non enregistrés.

Ainsi selon l'appartenance à tel ou tel groupe un internaute se vera présenté un affichage différent de la même page (même url).

SEBLOD pour aller plus loin

Comme toujours SEBLOD permet d'étendre le CMS Joomla! tout en le respectant, c'est à dire sans le remplacer. Les notions de droits et de niveaux d'accès vont donc être identiques avec SEBLOD mais avec une granularité beaucoup plus fine.

Les droits avec SEBLOD

On a vu précédemment que la matrice de droits générale était surchargée par composant: chaque composant peut redéfinir les droits qui s'appliquent aux éléments qu'il contrôle (menus, mmodules, articles, etc...).

Avec SEBLOD on étend ce principe à un niveau supplémentaire : En effet chaque type de contenu hérite des articles Joomla! standards. Pour chaque type de contenu on va donc pouvoir modifier la configuration des droits qui hérite de celle de la gestion des articles qui hérite elle-même de la configuration générale.

droits acl joomla droits cck


droits acl joomla droits cck detail

Les ACLS avec SEBLOD

Chaque contenu SEBLOD (c'est à dire un super article Joomla!) dispose naturellement d'un niveau d'accès mais on peut descendre au niveau de chaque champ. Ainsi un même contenu affichera ou masquera des champs à un utilisateur selon son appartenance à tel ou tel groupes. Cela s'effectue au niveau de chaque champ auquel on affecte un niveau d'accès:

droits acl joomla droits acls champs




Gestion multisites avec les ACLs

Les ACLs sont aussi utilisé par SEBLOD pour gérer les projets multisites.

 Sites seblod

Si les domaines ont été définis en mode 'avancé': 

Nouveau site seblod

alors on se retrouve avec les ACLs suivantes :
ACL sites seblod
Ainsi pour chaque site SEBLOD définit un jeu d'ACL. Le niveau d'accès PUBLIC d'un projet Joomla! standard se transforme ici en un niveau d'accès 'public' pour chaque site.

Multisites, multilangues et multidevices pour la SORBONNE
Pulsar, le JoomlaDay et Israël
Joomla! fête ses 10 ans!
Pulsar primé pour le site de la Sorbonne
Comprendre le stockage des données avec SEBLOD
Joomla meilleur cms open source 2011
Plugin de cache Joomla : les images ne s'affichent pas
Joomla! à nouveau élu meilleur CMS 2017
Gestion Electronique de Documents sur mesure
l'AFUJ exposant au salon Open Source Summit 2015
SEBLOD: supprimer un script à moindre coût
Ajouter le bouton DOCLINK avec Jevents et SobiPro
Développement multi sites avec Joomla et Seblod
SEBLOD et J2store au JoomlaDay Israël 2017
Override joomla du template 'category' lié à un menu
Pulsar sponsor OR du JoomlaBusiness 2015
Paramètres hikashop des items de menu
sh404SEF: URLs n'apparaissent pas
Pulsar developpe la passerelle Joomla LUCENE SOLR
Monétisez votre workflow avec Joomla!
Critère de correspondance pour la recherche SEBLOD
Workflow et formulaires faciles avec Joomla! et Seblod 3/4
Pulsar forme au CCK SEBLOD pour Joomla!
Pulsar certifie ses formateurs Joomma!
Edition front end avec Hikashop et Virtuemart
Chasse aux bugs des templates Warp
Job board intégré à votre site Joomla!
Une agence web Joomla! au Drupagora
Extensions Joomla: accessibilité, menu vertical et réseaux sociaux
Virtuemart: flèches quantité ne fonctionnent pas
Pulsar au JoomlaDay Israel 2016
E-commerce avec Seblod
com_search joomla 2.5 recherche sans accents
Sommaire automatique pour Joomla
Astuces PHP lazy load sous joomla seblod warp
Les solutions multi sites avec Joomla!
CMS Day: Joomla pour les projets du secteur public
Soirée CMS open-source en PHP
Pulsar présente JOOMLA à AGORA CMS
JoomlaDay 2015: Pulsar y était!
Workflows généralisés avec Joomla! et Seblod (partie 4)
Transformer un article en contenu SEBLOD
Quelles extensions choisir pour son site joomla ?
Pulsar présente son expertise SEBLOD au JoomlaDay 2013
Joomla 4 : professionnalisation et performance
GED Open Source simple pour les PME
Joomla! présent au salon AGORA CMS 2016
Pulsar et Joomla pour les sites évolués au JoomlaDay 2014
Super BreadCrumb for Joomla 1.5 1.6 & 1.7
Pulsar présente le projet pour la Sorbonne au JoomlaDay!
Pourquoi nous avons ajouté WordPress à notre offre
Workflow Joomla! évolué avec Seblod 2/4
Les nouveautés de Joomla! 4
Sites multi langues mobiles avec Joomla et Seblod
Joomla et les CCK
3 nouvelles extensions Joomla! de Pulsar dans la JED
Personnalisation du backoffice de Joomla!
Workflows évolués pour Joomla! avec Seblod 1/4
Pulsar présente le JoomlaBusiness à l'AFUP
Correctif de Pulsar dans le routeur de Joomla
Ajouter Cufon à votre site Joomla!:
Joomla! meilleur CMS PHP Open Source
Pulsar, sponsor OR du JoomlaDay 2017
Astuce: suppression des éléments Seblod
Référencement naturel, cocons sémantiques et Joomla!
Import shipping pour hikashop
SOBI Pro: le menu principal ne s'affiche pas
JCEmediabox et css js compress
Elections 2016 ... le CMS Joomla! encore
Plugin merge css/js pour Joomla
Optimisation et vitesse de votre site Joomla!
Ajouter une icône d'édition dans une liste SEBLOD
Fenêtre coulissante avec Joomla et Seblod
Pulsar gagne l'appel d'offre de la Sorbonne
Comparaison des CCKs pour Joomla!
Les avantages de Joomla! face à Drupal
Pulsar présente le job board du nouveau site web Dynamique Emploi
Developpements pour la Bibliotheque Mazarine
Projets multi langues et multi sites avec Seblod
Nouveau site de Pulsar avec Seblod!
L'agence Pulsar sponsorise le JoomlaDay 2015
Advanced module manager et page d'accueil
Indiegogo: contrôle de version avancé avec SEBLOD
Les solutions e-commerce avec Joomla!
Pulsar au JoomlaDay 2014: Chaine de production
Entrées grisées avec la mention [extrait] dans DOCMAN
Un nouveau routeur pour Joomla!
JoomlaDay 2015: Joomla! pour les applis pro
Pulsar présente le CMS Joomla! au club STARINUX
Pulsar sponsor du Joomladay
Chargement Joomla avec Mootools de Google