Benutzerdefiniertes Modul: Zugriff verweigert (ACL-Problem)

12

Ich habe ein Modul erstellt und es funktioniert perfekt. Ich bin jedoch gegen eine Wand gestoßen. Wenn ich als Administrator angemeldet bin, ist alles gut. Ich habe dies in der acl hinzugefügt:

<?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>  

Wenn ich einer Rolle die Berechtigung erteile und mich als Benutzer mit dieser Rolle anmelde, wird der Menüpunkt (nicht die Konfiguration, sondern der eigentliche Menüpunkt) angezeigt. Wenn ich jedoch darauf drücke, wird der Fehler Zugriff verweigert angezeigt:

Geben Sie hier die Bildbeschreibung ein

Was vermisse ich?

Dencker
quelle

Antworten:

24

Ich habe eine Ahnung, dass Sie in Ihrem Admin-Controller eine Methode namens haben _isAllowed.
Wenn das stimmt, denke ich, dass es das Falsche zurückgibt.
Es sollte so aussehen:

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');  

}
Marius
quelle
DUH! Das war's. Ich habe tatsächlich versucht, ein _isAllowed () hinzuzufügen, aber das gab mir einen 503. Ich habe an einem Live-Server gearbeitet, daher konnte ich die Ausnahmedaten nicht sehen. Offensichtlich lag es daran, dass ich es neu deklarierte, als ich vergaß, dass ich es mitten in der Klasse deklarierte. Vielen Dank, ein schönes Wochenende!
Dencker
oder Sie können auch schreiben: protected function _isAllowed () {return true; }
Andhi Irawan
2
Aber das macht es für jeden Administrator verfügbar. Auch wenn er keinen Zugang dazu haben sollte.
Marius