Wie hier geschrieben :
Wenn Sie eingeschränkte Administratorkonten verwenden, funktionieren einige Menüs von Erweiterungen von Drittanbietern möglicherweise nicht mehr für diese. Der Grund dafür ist , dass der Standardrückgabewert Mage_Adminhtml_Controller_Action::_isAllowed()
wird von geändert true
zu Mage::getSingleton('admin/session')->isAllowed('admin')
. Erweiterungen, die diese Methode in ihren Administrator-Controllern nicht überschreiben, weil sie die ACL nicht verwenden, benötigen jetzt das Zugriffsrecht "ALL" .
Die einzige Lösung besteht darin, die Erweiterungen zu patchen und diese Methode allen Administratoren hinzuzufügen:
protected function _isAllowed()
{
return true;
}
Oder wenn tatsächlich eine ACL-Ressource definiert ist in etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
So ermitteln Sie die Ressourcenkennung
So adminhtml.xml
könnte eine aussehen:
Nehmen Sie die folgenden Knotennamen acl/resources/admin/children
und überspringen Sie die folgenden children
Knoten.
So erstellen Sie fehlende Ressourcen-IDs
Wenn es nur eine <menu>
Definition, aber keine <acl>
Definition gibt, können Sie auch Ihre eigene definieren (diese muss sich nicht im selben Modul befinden, sodass keine Dateien von Drittanbietern geändert werden müssen):
Kopieren Sie alles unten menu
auf acl/resources/admin/children
und entfernen Sie die <action>
Knoten.
Automatische Korrektur
Es gibt ein gutes Befehlszeilentool von SupportDesk.nu unter https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd
Es verarbeitet die meisten fehlenden _isAllowed()
Aufrufe recht gut, führt jedoch zu fehlerhaftem Code mit verschleierten oder verschlüsselten Quelldateien. Daher sollten Sie die Ergebnisse weiterhin manuell überprüfen.