Как написано здесь :
Если вы используете ограниченные учетные записи администратора, некоторые меню сторонних расширений могут больше не работать для них. Причина в том, что возвращаемое значение по умолчанию Mage_Adminhtml_Controller_Action::_isAllowed()
было изменено с true
на Mage::getSingleton('admin/session')->isAllowed('admin')
. Расширения, которые не переопределяют этот метод в своих административных контроллерах, поскольку они не используют ACL, теперь нуждаются в привилегии «ALL» .
Единственное решение - это исправить патчи и добавить этот метод ко всем их контроллерам администратора:
protected function _isAllowed()
{
return true;
}
Или если у них действительно есть ресурс ACL, определенный в etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
Как определить идентификатор ресурса
Вот как adminhtml.xml
может выглядеть:
Возьмите имена узлов ниже acl/resources/admin/children
, пропуская следующие children
узлы.
Как создать отсутствующие идентификаторы ресурса
Если есть только <menu>
определение, но нет <acl>
определения, вы также можете определить свое собственное (оно не обязательно должно быть в одном модуле, поэтому не нужно изменять файлы сторонних производителей):
Скопируйте все ниже , menu
чтобы acl/resources/admin/children
и удалить <action>
узлы.
Автоматическое исправление
Есть хороший инструмент командной строки от SupportDesk.nu по адресу https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd
Он _isAllowed()
хорошо обрабатывает большинство пропущенных вызовов, но приводит к некорректному коду с обфусцированными или зашифрованными исходными файлами, поэтому вам все равно следует проверить результаты вручную.