Як написано тут :
Якщо ви використовуєте обмежені облікові записи адміністратора, деякі меню сторонніх розширень можуть більше не працювати для них. Причина в тому, що повернене значення за замовчуванням Mage_Adminhtml_Controller_Action::_isAllowed()
було змінено з true
на Mage::getSingleton('admin/session')->isAllowed('admin')
. Розширення, які не змінюють цей метод у своїх контролерах адміністратора, оскільки вони не використовують ACL, тепер потребують привілею "ВСІ" .
Єдине рішення - виправити розширення та додати цей метод до всіх їх адміністраторів:
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()
дзвінків досить добре, але призведе до зламаного коду із затуманеними або зашифрованими вихідними файлами, тому ви все одно повинні перевірити результати вручну.