Как предоставить пользовательские разрешения доступа для пользователей-администраторов (ролей) для расширения magento


Я создал пользователя-администратора в magento и даю определенные разрешения на доступ, и у меня есть расширение под названием билет поддержки, я предоставил доступ к роли пользователя к этому расширению, когда я вошел в систему этого конкретного пользователя, я получаю сообщение об ошибке "доступ запрещен для этого расширения билета поддержки", когда я вхожу в систему как администратор, он работает нормально, и когда я изменил разрешение роли пользователя с пользовательского на все, все работает как ожидалось, но мне нужно предоставить только этот конкретный доступ разрешите, что я могу сделать?enter image description here

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>
Author: Naveenbos, 2015-08-25

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; из метода, но это позволяет получить доступ к любому пользователю-администратору.

 8
Author: Vic, 2017-04-13 12:54:56

Есть пара идей, которые вы можете проверить

  • убедитесь, что контроллер Adminhtml модуля имеет метод _isAllowed
  • проверьте, соответствует ли путь в методе _isAllowed вашему списку управления доступом в файле adminhtml.xml
  • убедитесь, что кэш очищен после создания роли
 5
Author: Sander Mangel, 2015-08-25 12:52:07

Единственное решение - исправить расширения и добавить этот метод ко всем их контроллерам администратора:

protected function _isAllowed()
{
    return true;
}
 2
Author: Naveenbos, 2015-08-26 06:09:31