Как предоставить пользовательские разрешения доступа для пользователей-администраторов (ролей) для расширения magento
Я создал пользователя-администратора в magento и даю определенные разрешения на доступ, и у меня есть расширение под названием билет поддержки, я предоставил доступ к роли пользователя к этому расширению, когда я вошел в систему этого конкретного пользователя, я получаю сообщение об ошибке "доступ запрещен для этого расширения билета поддержки", когда я вхожу в систему как администратор, он работает нормально, и когда я изменил разрешение роли пользователя с пользовательского на все, все работает как ожидалось, но мне нужно предоставить только этот конкретный доступ разрешите, что я могу сделать?
Adminhtml.xml
<?xml version="1.0"?>
<config>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<support_ticket_ultimate translate="title" module="supportticket">
<title>Support Ticket Ultimate Section</title>
<sort_order>0</sort_order>
</support_ticket_ultimate>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</config>
3 answers
Я хочу немного объяснить, что сказал @Sander Мангель в своем ответе:
- убедитесь, что контроллер Adminhtml модуля имеет _isAllowed метод
Ищите файлы, подобные этому:
/app/code/community/your/module/controllers/Adminhtml/SomeController.php
И убедитесь, что в каждом контроллере администратора есть метод, который выглядит так:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('your_module/resource_you_need');
}
Недавнее исправление безопасности делает так, что контроллеры без метода _isAllowed
не работают. В этом ответе также говорится, что это работает, если модуль реализовал ACL в etc/adminhtml.xml
, и поскольку вы говорите, что добавили соответствующее разрешение для роли пользователя, это звучит так, как у вас. В случае, если это не так, просто return true;
из метода, но это позволяет получить доступ к любому пользователю-администратору.
Есть пара идей, которые вы можете проверить
- убедитесь, что контроллер Adminhtml модуля имеет метод
_isAllowed
- проверьте, соответствует ли путь в методе
_isAllowed
вашему списку управления доступом в файлеadminhtml.xml
- убедитесь, что кэш очищен после создания роли
Единственное решение - исправить расширения и добавить этот метод ко всем их контроллерам администратора:
protected function _isAllowed()
{
return true;
}