Comment mettre en place une meilleure organisation des utilisateurs pour vos clients -tout en améliorant la facilité d'utilisation- en utilisant les ACL dans le backend de Joomla!
Introduction
Dans les articles précédents, j'ai couvert la terminologie ACL et un aperçu général de la façon dont fonctionne ACL, mise en place des niveaux d'accès en front-end, et création d'une meilleure organisation pour l'enregistrement. Maintenant, je vais couvrir comment mettre en place une meilleure organisation des utilisateurs pour vos clients -tout en améliorant la facilité d'utilisation- en utilisant les ACL dans le backend de Joomla!
Pour la majorité des sites que j'ai construis, j'ai essaié de faire en sorte que mes clients éditent leurs sites web à partir du frontend de joomla!. Malheureusement, les possibilités d'édition via le frontend de Joomla! sont limitées. Il n'est pas possible de créer facilement de nouveaux articles ou de les lier au frontend du site, par exemple, sans régler une fonctionnalité de blog (et parfois ce n'est pas ce que nous souhaitons utiliser). Donc, plus souvent que ce que je souhaiterais, je dois donner à mes clients un accès au backend de Joomla! Afin qu'il puissent effectuer des taches simples.
Cependant, quand un client arrive dans le backend de Joomla!, il est rapidement distrait par des fonctionnalité qu'il ne devrait jamais toucher. Même si vous donnez à vos clients un accès Manager au backend, il auront toujours accès à des options déstabilisantes.
En faisant le tri des fonctionnalités du backend de Joomla!, en ne laissant seulement celles auxquelles doit avoir accès votre client, vous lui simplifiez le processus. Il saura à quoi correspond chaque option dans chaque option de chaque élément de menu, et saura également les utiliser... si vous lui fournissez une formation adéquate et de la documentation.
Refuser jusqu'à Autoriser vs Autoriser jusqu'à Refuser
Les ACL de Joomla! sont un système configuré comme “refuser jusqu'à permettre”. Le groupe d'utilisateur Publique n'a pas la permission de faire quoi que ce soit excepter voir le frontend du site. Chaque groupe d'utilisateur par défaut possède des permissions en plus, et ces permission sont toujours quelque chose d'autorisé.
Rappelez-vous que les interdiction ne peuvent êtres surchargées. Si vous interdisez à un groupe d'utilisateur d'éditer le contenu d'une catégorie, vous ne pouvez pas faire une surcharge pour seulement un article contenu dans cette catégorie. Cependant, si le groupe d'utilisateur a hérité de la permission “Non Défini” du groupe Publique (Ils ne sont pas autorisé à faire quelque chose, mais ce quelque chose peut être surchargé) ils sont actuellement dans l'impossibilité d'éditer les articles de cette catégorie. Vous pouvez ensuite donner la permission Autoriser pour un seul article et donc surcharger le paramètre catégorie.
Nous pouvons ajouter des permissions pour un groupe d'utilisateur pour exécuter certaines taches à plusieurs niveaux. Prenons l'ajout de l'autorisation Editer, de sorte que notre client puisse éditer les articles. Il y a plusieurs endroits où l'autorisation d'édition pourraient être ajoutés, avec des significations associées.
- Éditer, Configuration Globales : De nombreux groupes d'utilisateur par défaut de Joomla! ont la permission assigné dans les Configuration Globales. Cependant, quand la permission Éditer est assignée ici, cella signifie que le groupe qui a cette permission peut éditer toutes les sortes de contenu : articles, mais également liens web, formulaire de contact, et plus encore. Afin de désactiver la capacité d'éditer, vous devez utiliser Refuser. Cela signifie que vous devrez refuser l'habilitation à éditer dans de nombreuses endroit au sein de la structure Joomla!. En général, je ne recommande pas d'autoriser l'édition au niveau des Configuration Globales.
- Éditer, Options d'Article : Ajouter la permission ici signifie que le client peut éditer les articles et les catégories n'importe où dans le contenu. Vous aurez besoin de refuser l'accès à des catégories ou des articles spécifiques si le client n'est pas été autorisé à modifier. Rappelez-vous qu'il n'est pas possible de surcharger les interdictions. A moins que votre client est besoin d'effectuer des modification n'importe où dans les gestionnaires d'articles et de catégories, je ne recommande pas de régler les permission d'édition ici non plus.
- Éditer, catégorie individuelle : Le client va maintenant être en mesure de modifier les articles placés dans une catégorie donnée. Cela prend plus de sens et rend l'administration plus simple. Vous pouvez interdire l'édition pour un article individuel et ne pas avoir à vous préoccuper de se qui se produira si vous avez plus tard à surcharger quelque chose de plus profond dans la structure de Joomla!.
- Éditer Article individuel : Vous pouvez régler les permissions individuellement dans les articles, mais cela prend du temps. En général, je ne recommandes pas de changer les permissions individuellement dans chaque article sauf si cela est nécessaire et qu'il n'y a pas d'autres solutions. Rappelez-vous que si interdisez au niveau de la catégorie, vous ne pouvez pas surcharger au niveau de l'article.
En général, vous devez suivre une stratégie Interdire jusqu'à Autoriser lorsque vous configurez les ACL Joomla!. Cela vous donne un maximum de possibilités par la suite, pour régler les permissions sur une base article par article. Si vous permettez jusqu'à interdire, vous n'aurez pas la flexibilité de changer les permissions ensuite.
Le problème que nous essayons de résoudre
Disons que vous souhaitez donner à votre client des accès très basiques au backend de Joomla! :
- Possibilité de créer, éditer, publier/dé-publier les articles d'une ou plusieurs catégories (ou même de toutes).
- Possibilité de créer, éditer, publier/dé-publier les éléments de menu.
- Possibilité d'accéder à certains composants basiques comme le composant liens web.
Présentation de la solution
L'approche générale de configuration sera la suivante :
- Créer un nouveau groupe d'utilisateurs, lui assigner les autorisations de base, et créer un compte utilisateur pour le client.
- Assigner le(s) niveau(x) d'accès approprié(s).
- Assigner les permissions pour que le client puisse accéder au gestionnaire d'articles, gestionnaire de menu, et liens web.
Je vous recommande de suivre cet exemple en utilisant deux navigateurs web. J'utilise Firefox pour ma connexion super utilisateur, et j'utilise Chrome pour ma connexion client, mais vous pouvez utiliser n'importe quelle combinaison de vos navigateurs, tant qu'ils supportent Joomla!. De cette manière, je peux basculer entre les différentes vues, et ajuster les informations que je fais. Si vous n'utilisez qu'un navigateur, vous serez obligé de vous déconnecter et de vous reconnecter afin de vérifier ce que vous faites – Joomla! ne vous permet pas de partager deux connexions sur le même navigateur.
1. Création d'un nouveau groupe d'utilisateurs, assignation des permissions de base, création d'un utilisateur
J'ai couvert ce procédé en détail dans un autre article. Rapidement, suivez ces instructions :
- Créez un nouveau groupe d'utilisateurs nommé Groupe d'Utilisateurs Client. Faites-en un enfant du groupe Publique.
- Dans les Configurations Globales, sous Permissions, réglez la permission de la Connexion Admin à Autorisé. (Si votre client a également besoin de se connecter au frontend, vous devez régler la permission à la connexion du Site sur Autoriser. Ajustez les autres permissions en accord avec ce que doit pouvoir faire votre client.)
- Créez un utilisateur client, et assignez cet utilisateur au Groupe Utilisateur Client. Assurez vous de vous souvenir de l'identifiant et du mot de passe !
2. Assignation des niveaux d'accès
Si maintenant vous vous connectez à Joomla! en tant que client, vous devriez avoir un écran similaire à celui-ci.
Ce n'est pas très utile ! Vous pouvez vous connecter, mais où est le menu ? Où est le panneau d'administration ? Que pouvez vous faire ici, autre que de vous déconnecter ?
Une chose que vous n'avez pas encore configuré est un niveau d'accès pour le backend du site. Souvenez-vous que ce niveau d'accès contrôle qui voit quoi, incluant modules, contenu, et ainsi de suite. Les menus sont des modules, également dans le backend de Joomla!. Ils sont des modules administrateurs, et ces modules administrateurs sont assignés au niveau d'accès Spécial. Cependant, votre client aura également besoin d'avoir le niveau d'accès Spécial assigné à son groupe d'utilisateurs.
Parce que Spécial est requis pour faire fonctionner les ACL backend, je vous conseille de ne pas utiliser Spécial comme un niveau d'accès au frontend de Joomla!.
Suivez maintenant ces indications :
- En temps que Super Utilisateur, assignez le niveau d'accès Spécial au groupe d'Utilisateurs Client. (regardez cet article si vous avez besoin d'aide.)
- Déconnectez votre compte client, puis reconnectez-vous. (Parce que le niveau d'accès change, vous devez vous déconnecter puis vous reconnecter afin de changer l’interface d'administration.)
En temps que client, vous devriez voir quelque chose comme cela :
Voici ce que peut faire le client dans le backend actuellement :
- Éditer son propre profil, modifier son identifiant et son mot de passe (mais comme il n'est pas super utilisateur, il ne peut pas changer son groupe d'utilisateurs).
- Voir les liens d'aide, tous ceux qui sont sur les pages accessibles au publique.
- Se déconnecter, ou accéder au frontend du site.
- Voir une liste des 5 articles les plus populaires, et les 5 derniers articles ajoutés via le module de droite, mais il ne peut éditer aucun article.
Ce n'est toujours pas très utile, mais au moins, ce n'est plus absolument rien ! Notre prochaine étape est de donner au client la permission de créer, éditer, et changer l'état des articles.
3a. Assigner les permissions : Articles
Le client doit être capable d’accéder au gestionnaire d'articles du backend de Joomla!. La première étape est de donner au client l'accès au gestionnaire d'article comme une option dans le menu. Une fois que cette option est visible, nous pouvons alors nous focaliser sur l'assignation de permissions plus spécifiques.
Faire apparaître le Gestionnaire d'Articles dans le backend du client
Pour faire apparaître le Gestionnaire d'Articles comme une option dans le menu, rendez-vous dans Contenu => Gestionnaire d'Articles => Paramètres, choisissez l'onglet permissions et réglez “Accéder à l'administration” sur Autoriser pour le Groupe d'Utilisateur Client. Cliquez sur sauver.
(Vous pourriez être curieux à propos de l'option de configuration. C'est la permission qui vous autorise à accéder à la boite de dialogue des Options. En général, vous souhaiterez que seul le super utilisateur ait accès à ça.
Maintenant, allez sur le navigateur web du client, rafraichissez votre écran, et vous devriez voir le Gestionnaire d'Articles et le Gestionnaire de Catégories apparaître comme icône dans le panneau d'administration ainsi que comme élément de menu.
Malheureusement, il n'est PAS possible de séparer les permissions pour le Gestionnaire d'Articles et le Gestionnaire de Catégories pour le moment. C'est une faiblesse majeure dans les ACL de Joomla!.
Si vous regardez le Gestionnaire d'Articles en tant que client, vous devriez pouvoir voir la liste complète des articles. Cependant, vous ne pouvez pas les éditer, et vous ne pouvez pas non plus modifier leurs états. Il n'y a pas de bouton pour créer un nouvel article (en haut à droite), il y a seulement l’icône d'aide.
Édition de tous les articles vs édition des catégories d'articles
La prochaine étape est de donner la permission au client d'éditer et de changer l'état des articles. Voulez-vous donner au client la possibilité de modifier tous les articles, ou souhaitez-vous seulement lui donner cette permission pour certaines catégories, ou avez-vous besoin de donner cette permission article par article ?
La réponse est toujours ça dépend ! Quand vous configurez la structure de catégories de votre site, je recommande cela :
- Gardez les ACL à l'esprit quand vous paramétrez les catégories de contenu. Si vous devez interdire à votre client l'accès à certaines pages du site, vous devez classer ces pages dans la même catégorie, même si leur contenu est très différent. Cela rendra l'ACL plus simple à configurer.
- Également, si le client a seulement besoin d'éditer certains articles, cela serait plus logique de les classer dans la même catégorie.
- Changer les permissions dans un système article-par-article devrait être utilisé que pour les cas les plus rares. Il est difficile d'expliquer au client qu'il doit configurer les permissions lors de la création de nouveaux articles. Réglez les permissions au niveau de la catégorie, et le client n'aura jamais besoin de les toucher lors de la création de nouveaux articles.
Pour chaque scénario, voici comment vous devez procéder.
Le client doit éditer tous les articles
Si le client doit éditer tous les articles, configurez les permissions comme cela :
- Sous Contenu – Gestionnaire d'Articles – Paramètres – Permission, pour le Groupe d'Utilisateurs Client, réglez Créer, Modifier, Modifier le Statut, et Modifier ses éléments sur Autoriser. En général, je ne donne pas la permission au client de supprimer le contenu, ce qui lui donnerait la possibilité de vider la corbeille. Il peut dé-publier ou mettre à la corbeille avec la permission Modifier le Statut.
Le client peut éditer les articles d'une ou plusieurs catégories
Si le client doit seulement éditer les articles d'une ou d'un petit nombre de catégories, configurez chaque catégorie comme cela :
- Vous devez autoriser l'Accès à l'Interface d'Administration sous Contenu – Gestionnaire d'Articles – Paramètres – Permissions.
- Sous Contenu – Gestionnaire de Catégories, cliquez sur le nom de la catégorie d'articles que le client doit pouvoir éditer. En bas du panneau de configuration, pour chaque catégorie, vous retrouvez les permissions. Réglez ces permissions pour autoriser Créer, Modifier et Modifier ses éléments.
- Répétez ce procédé pour chaque catégorie d'articles dans laquelle le client doit avoir accès.
Le client doit avoir accès à une base article-par-article
Vous pouvez également éditer les articles individuellement en tant que super utilisateur, scroller vers le bas de l'écran et régler les permissions client ici. Cela doit être utilisé seulement dans de rares circonstances . Configurer les permissions au niveau des catégories est une meilleure approche en perspective de la maintenance.
J'ai autorisé mon client à créer, modifier, et modifier le statut de tous les articles du site. Le panneau de contrôle, pour le compte client, ressemble à cela :
3b Assigner les permissions : Gestionnaire de médias
En tant que client, si vous éditez un article, une des taches que vous aurez certainement besoin d’accomplir, est la possibilité d'ajouter une image à l'article.
Les permissions sont actuellement affectées comme cela : le client peut voir les articles, les éditer en cliquant sur le titre, obtenir le formulaire d'édition de l'article, puis cliquer sur le bouton Image situé sous la fenêtre de texte de l'article. La fenêtre du Gestionnaire de Média :
Notez que le client peut naviguer et sélectionner n'importe quelle image déjà présente dans le Gestionnaire de Médias, mais il n'a pas l'interface permettant de charger une nouvelle image sur le site. Cela vient du fait que le Gestionnaire de Médias est un composant séparé du Gestionnaire d'Articles, et qu'il possède donc son propre réglage de permissions.
Le Gestionnaire de Médias n'apparait pas dans la structure du menu backend de Joomla! lorsque vous êtes connecté avec le compte client.
Pour changer cela, retournez sur votre navigateur super utilisateur, allez à Contenu – Gestionnaire de Médias – Paramètres – Droits, réglez Accès à l'administration et Créer sur Autoriser.
3c Assigner les permissions : Menu
A partir de maintenant, vous devez avoir une idée de ce qui va suivre. Si le client a besoin de lier un article à un menu, il a besoin d'accéder au Gestionnaire de Menu dans le backend de Joomla!.
En tant que super utilisateur, allez dans Menus – Gestionnaire de Menu – Paramètres, et pour le Groupe d'Utilisateurs Client, réglez Accès à l'administration, Créer, Modifier et Modifier l'état sur Autoriser.
Malheureusement, vous n'êtes pas en mesure d'autoriser le client à ajouter des éléments de menu enfants à un certain menu parent, ou de l'autoriser à ne créer que certains types d'éléments de menu. Ce serait une bonne addition aux ACL de Joomla!.
3d Assigner les permissions : Composant Liens Web
Voici à quoi ressemble le backend de mon client désormais :
Désormais, je veux donner au client l'accès aux Liens Web mais pas aux autres composants de Joomla!. Heureusement, cela est facile à faire, et vous avez certainement compris comment faire.
En tant que super utilisateur, allez dans Composant – Liens Web – Paramètres – Droits, et pour le groupe d'Utilisateurs Client, réglez Accès à l'administration, Créer, Modifier, Modifier le Statut sur Autoriser.
Vous pouvez répéter ce procédé pour tous les composants Joomla! auxquels le client doit avoir accès.
Notes : certaines extensions tierces n'ont pas entièrement intégré le système ACL de Joomla!. Si le système ACL est important pour votre site, assurez vous de choisir des composants qui ont parfaitement intégré ce système.
Traduction libre de l'article de Jen Kramer sur le Joomla!® Community Magazine du mois de Mai 2012 : Joomla ACL: Configuring back-end ACL
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.