Mini tutoriel pour ajouter une gestion basique des droits d'accès à votre composant, dans la partie backend. Cet article s'applique à vos composants Joomla 2.5 et supérieur.
Etant une application à titre d'exemple, le but est de pouvoir gérer les droits à deux niveaux, la modification des paramètres du composant et l'accès au composant. Ici le composant se nomme "com_blog", à vous de le changer suivant vos besoins.
A la racine de votre composant, créez un fichier access.xml contenant ce code :
Fichier : dans administrator/components/com_blog/access.xml
<?xml version="1.0" encoding="utf-8" ?> <access component="com_blog"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> </section> </access>
Nous avons donc 2 actions, "core.admin" et "core.manage". Elles commencent par "core" car elles s'appliquent à des actions du coeur de Joomla tout simplement. Il en existe d'autres comme "core.create", "core.delete", etc. Vous pouvez aussi créer vos propres actions du type "weblogin.delete", mais ce n'est pas le but de ce tutoriel.
Pour cela il va falloir vérifier que l'utilsateur connecté dans l'administration à bien le droit de voir la page d'administratrion du composant. Cette vérification doit donc se faire au plus tot, donc dans notre fichier racine du composant, juste après la vérification defined('_JEXEC') or die('Restricted access') :
Fichier : administrator/components/com_blog/blog.php
if (!JFactory::getUser()->authorise('core.manage', 'com_blog')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); }
Si l'utilisateur accède à la page du composant sans avoir les droits nécessaires, il aura une belle page 404. Mais ceci ne devrait pas arriver, puisqu'en utilisant le "core.manage", Joomla est assez intelligent pour ne pas afficher le lien vers ce composant dans la liste des composants si l'utilisateur n'a pas le niveau nécessaire. Plutôt très pratique !
Cela permettra d'autoriser ou non un utilisateur l'accès à la partie "Paramètres" de votre composant. Pour ajouter des boutons dans la Toolbar de votre composant, vous devriez déjà avoir dans votre view.html.php une fonction addToolbar(), qui contient la déclaration de boutons comme "Nouveau", "Supprimer", " Modifier", etc. Pour ajouter un bouton de paramètres il faut :
Fichier : administrator/components/com_blog/views/blog/view.html.php
JToolBarHelper::preferences('com_blog');
Et maintenant pour lui appliquer les ACL :
if (JFactory::getUser()->authorise('core.admin', 'com_blog')) { JToolBarHelper::preferences('com_blog'); }
Voila c'est fini ! Très simple et très utile, autant ne pas s'en priver pour vos développements. Vous pouvez utiliser d'autres actions comme par exemple "core.delete" pour vérifier si un utilisateur à les droits nécessaire pour supprimer un élément.