Módulo personalizado: acesso negado (problema da ACL)


12

Eu criei um módulo e ele funciona perfeitamente; no entanto, eu bati em uma parede. Quando estou logado como administrador, tudo fica bem. Eu adicionei isso no 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>  

Mas se eu conceder a permissão a uma função e efetuar login como um usuário com essa função, eles verão o ponto de menu (não a configuração, mas o ponto de menu real), mas se eu pressionar, recebo um erro de Acesso Negado:

insira a descrição da imagem aqui

o que estou perdendo?

Respostas:


24

Eu tenho um palpite que você tem no seu controlador de administração um método chamado _isAllowed.
Se isso for verdade, acho que retorna a coisa errada.
Deve ficar assim:

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

}

DUH! Foi isso. Na verdade, tentei adicionar um _isAllowed (), mas isso me deu um 503. Eu estava trabalhando em um servidor ativo, então não pude ver os dados da exceção. Obviamente, era porque eu estava redeclarando-o, pois esqueci que o declara no meio da aula. Muito obrigado, tenha um ótimo final de semana!
Dencker

ou você também pode escrever: função protegida _isAllowed () {return true; }
Andhi Irawan 14/09/16

2
Mas isso o tornará disponível para todos os administradores. Mesmo que ele não deva ter acesso a isso.
Marius
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.