Module personnalisé: accès refusé (problème ACL)

12

J'ai créé un module, et cela fonctionne parfaitement; cependant, j'ai heurté un mur. Lorsque je suis connecté en tant qu'administrateur, tout est bon. J'ai ajouté ceci dans l'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>  

Mais si j'accorde l'autorisation à un rôle et me connecte en tant qu'utilisateur avec ce rôle, ils voient le point de menu (pas la configuration, mais le point de menu réel), mais si j'appuie dessus, j'obtiens une erreur d'accès refusé:

entrez la description de l'image ici

Qu'est-ce que je rate?

Dencker
la source

Réponses:

24

J'ai une intuition que vous avez dans votre contrôleur d'administration, une méthode appelée _isAllowed.
Si c'est vrai, je pense que cela renvoie la mauvaise chose.
Ça devrait ressembler à ça:

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
la source
DUH! C'était ça. J'ai en fait essayé d'ajouter un _isAllowed (), mais cela m'a donné un 503. Je travaillais sur un serveur en direct, donc je ne pouvais pas voir les données d'exception. Évidemment, c'était parce que je le redéclarais car j'oubliais de l'avoir déclaré au milieu de la classe. Merci beaucoup, bon week-end!
Dencker
ou vous pouvez également écrire: fonction protégée _isAllowed () {return true; }
Andhi Irawan
2
Mais cela le rendra disponible pour tous les administrateurs. Même s'il ne devrait pas y avoir accès.
Marius