Comme écrit ici :
Si vous utilisez des comptes d’administrateur restreints, certains menus d’extensions tierces risquent de ne plus fonctionner pour eux. La raison en est que la valeur de retour par défaut Mage_Adminhtml_Controller_Action::_isAllowed()
a été modifié par rapport true
à Mage::getSingleton('admin/session')->isAllowed('admin')
. Les extensions qui ne remplacent pas cette méthode dans leurs contrôleurs d’administration parce qu’elles n’utilisent pas la liste de contrôle d’accès ont maintenant besoin du privilège "ALL" .
La seule solution consiste à patcher les extensions et à ajouter cette méthode à tous leurs contrôleurs d'administration:
protected function _isAllowed()
{
return true;
}
Ou s’ils disposent d’une ressource ACL définie dans etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
Comment déterminer l'identifiant de la ressource
Voici à quoi adminhtml.xml
pourrait ressembler un:
Prenez les noms de nœud ci acl/resources/admin/children
- dessous , en ignorant les children
nœuds suivants .
Comment créer des identifiants de ressources manquants
S'il y a seulement une <menu>
définition mais pas de <acl>
définition, vous pouvez aussi définir la vôtre (il n'est pas nécessaire qu'elle soit dans le même module, donc aucun fichier tiers ne doit être modifié):
Copiez tout ce qui suit menu
pour acl/resources/admin/children
supprimer les <action>
nœuds.
Correction automatique
Il existe un bon outil en ligne de commande de SupportDesk.nu à l' adresse https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd.
Il gère _isAllowed()
très bien la plupart des appels manquants, mais entraîne la rupture du code avec des fichiers source obscurcis ou cryptés. Vous devez donc vérifier les résultats manuellement.