Come scritto qui :
Se si utilizzano account di amministratore con restrizioni, alcuni menu di estensioni di terze parti potrebbero non funzionare più per loro. Il motivo è che il valore di ritorno predefinito di Mage_Adminhtml_Controller_Action::_isAllowed()
è stato modificato da true
a Mage::getSingleton('admin/session')->isAllowed('admin')
. Le estensioni che non sostituiscono questo metodo nei loro controller di amministrazione perché non usano l'ACL, ora hanno bisogno del privilegio "TUTTO" .
L'unica soluzione è patchare le estensioni e aggiungere questo metodo a tutti i loro controller di amministrazione:
protected function _isAllowed()
{
return true;
}
O se in realtà hanno una risorsa ACL definita in etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
Come determinare l'identificatore di risorsa
Ecco come adminhtml.xml
potrebbe apparire:
Prendi i nomi dei nodi seguenti acl/resources/admin/children
, saltando i seguenti children
nodi.
Come creare identificatori di risorse mancanti
Se esiste solo una <menu>
definizione ma nessuna <acl>
definizione, puoi anche definirne una tua (non deve essere all'interno dello stesso modulo, quindi non è necessario modificare alcun file di terze parti) ::
Copiare tutto sotto menu
per acl/resources/admin/children
e togliere i <action>
nodi.
Correzione automatica
Esiste un buon strumento da riga di comando di SupportDesk.nu su https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd
Gestisce _isAllowed()
abbastanza bene la maggior parte delle chiamate mancanti ma si tradurrà in codice rotto con file di origine offuscati o crittografati, quindi dovresti comunque controllare i risultati manualmente.