Gestion des droits d’un plugin avec Pimcore
Lorsqu’on installe un plugin sous Pimcore, seul l’administrateur peut en faire usage dans le back-office. Nous allons voir dans cet article comment donner la possibilité à des utilisateurs désignés de pouvoir en faire de même.
Article écrit en collaboration avec Vincent Gaulet, gérant de la société Kodmaster.
Dans un premier temps, il faut bien se dire que Pimcore permet vraiment beaucoup de choses et elles ne sont pas toujours exploitées à leur maximum par les développeurs de plugins. Et on ne peut bien sûr pas leur jeter la pierre, les plugins proposés sont déjà excellents et Pimcore a tellement de ressources qu’il est difficile de toutes les connaître ou de toutes les utiliser.
En tant qu’administrateur principal du site, et ayant donc tous les pouvoirs dans le backend, on peut ainsi donner accès ou, au contraire, ne pas autoriser l’accès à un grand nombre de fonctionnalités du backoffice à tel ou tel utilisateur (et/ou groupe). On défini donc les rôles et la zone de travail pour chaque utilisateur que l’on a préalablement créés. Les trois éléments les plus importants sont les éléments, les objets et les documents. On peut paramétrer des droits pour ceux-ci et de manière assez fine. Mais bien d’autres options sont disponibles.
Mais qu’en est-il des permissions sur une extension (ou plugin) ,utilisée lors du développement du site et, dont on souhaite donner l’accès à aux utilisateurs ? Force est de constater que, par défaut, seul un admin, avec tous les pouvoirs, pourra accéder aux paramètres d’un plugin.
Afin de donner l’accès aux paramétrages des plugins dans votre application, il faudra modifier, dans le dossier plugins/nom_de_votre_extension_static/nom_extension_plugin.js, la fonction javascript qui bloque l’accès aux utilisateurs du backend dont les permissions et les zones de travail ont été créés dans le backend.
Dans le fichier nom_extension_plugin.js, il faut repérer la fonction qui déclenche la création et l’affichage du sous-menu permettant d’accéder au paramétrage du plugin dans le menu Extras. Cette fonction se nomme généralement « pimcoreReady » :
pimcoreReady: function (params,broker){ var user = pimcore.globalmanager.get("user"); if(user.admin == true){ var toolbar = Ext.getCmp("pimcore_panel_toolbar"); var action = new Ext.Action({ id:"sitemap_setting_button", text: t('Menu settings'), iconCls:"sitemap_icon_root", handler: function(){ var gestion = new sitemap.settings; } }); toolbar.items.items[1].menu.add(action); } } });
Il faut commenter le If statement qui détermine la condition d’accès seulement pour l’admin avec pleins pouvoirs de la manière suivante et ainsi, le sous-menu de ce plugin apparaîtra pour tous les utilisateurs dans Extras :
// if(user.admin == true){ (...) // }
Ainsi tous les utilisateurs accèdent au plugin sans aucune restriction.
C’est bien, mais on doit pouvoir faire mieux, comme choisir un utilisateur qui a droit d’utiliser ce plugin.
Commençons par créer un utilisateur qui aura pour mail « user@domaine.com » et du coup, on modifie la ligne de condition en conséquence :
if (user.mail == 'user@domaine.com' || user.admin == true){
Ainsi le tour est joué, on gère complètement l’usage des plugins.
Un bémol toutefois, si on met à jour les plugins que l’on a pas créé nous même, la modification risque d’être écrasée.