Спеціальний модуль: доступ заборонено (проблема ACL)


12

Я створив модуль, і він прекрасно працює; однак я вдарився об стіну. Коли я ввійшов як адміністратор, все добре. Я додав це в acl:

<?xml version="1.0"?>
<config>
    <menu>
        <erp translate="title" module="firtal_deadstock">
            <title>ERP</title>
            <sort_order>99</sort_order>
            <children>
                <stock_management module="firtal_deadstock">
                                <title>Stock Management</title>
                                <children>
                                    <firtal_deadstock>
                                        <title><![CDATA[Firtal Stock Analysis]]></title>
                                        <sort_order>99</sort_order>
                                        <action>adminhtml/deadstock</action>
                                    </firtal_deadstock>
                                </children>
                </stock_management>
            </children>
        </erp>
    </menu>
    <acl>
        <resources> 
            <all>
                <title>Allow Everything</title>
            </all>
            <admin>
                <children>
                    <system>
                        <children>
                            <config>
                                <children>
                                    <firtal_deadstock translate="title">
                                        <title>Firtal Stock Analysis settings</title>
                                        <sort_order>100</sort_order>
                                    </firtal_deadstock>
                                </children>
                            </config>
                        </children>
                    </system>
                    <erp module="firtal_deadstock">
                        <children>
                            <stock_management module="firtal_deadstock">
                                <children>
                                    <firtal_deadstock translate="title" module="firtal_deadstock">
                                        <title>Firtal Stock Analysis</title>
                                    </firtal_deadstock>
                                </children>
                            </stock_management>
                        </children>
                    </erp>
                </children>
            </admin>
        </resources>
    </acl>
</config>  

Але якщо я надаю дозвіл на роль і входжу як користувач із цією роллю, вони дійсно бачать точку меню (не конфігурацію, а фактичну точку меню), але якщо я натискаю її, я отримую помилку, заборонену доступом:

введіть тут опис зображення

Що я пропускаю?

Відповіді:


24

У мене в головному контролері адміністратора є метод, який називається _isAllowed.
Якщо це правда, я думаю, що це повертає неправильну річ.
Це повинно виглядати так:

protected function _isAllowed()
{
    return Mage::getSingleton('admin/session')->isAllowed('erp/stock_management/firtal_deadstock');  
    //or at least
    //return Mage::getSingleton('admin/session')->isAllowed('erp/stock_management');  

}

ДУХ! Це було все. Я насправді намагався додати _isAllowed (), але це дало мені 503. Я працював на живому сервері, тому не міг бачити даних про виключення. Очевидно, це було тому, що я переосмислив це, як забув, заявив про це в середині класу. Дякую купу, чудові вихідні!
Денкер

або ви також можете написати: захищена функція _isAllowed () {return true; }
Andhi Irawan

2
Але це зробить його доступним для кожного адміністратора. Навіть якщо він не повинен мати до нього доступ.
Маріус
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.