Módulo personalizado: acceso denegado (problema de ACL)


12

Creé un módulo y funciona perfectamente; Sin embargo, golpeé una pared. Cuando estoy conectado como administrador, todo es bueno. Agregué esto en la 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>  

Pero si otorgo el permiso a un rol e inicio sesión como usuario con ese rol, ellos ven el punto del menú (no la configuración, sino el punto del menú real), pero si lo presiono, aparece un error de Acceso denegado:

ingrese la descripción de la imagen aquí

¿Qué me estoy perdiendo?

Respuestas:


24

Tengo el presentimiento de que tiene en su controlador de administración un método llamado _isAllowed.
Si eso es cierto, creo que devuelve lo incorrecto.
Debe tener un aspecto como este:

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! Eso fue todo. En realidad intenté agregar un _isAllowed (), pero eso me dio un 503. Estaba trabajando en un servidor en vivo, por lo que no pude ver los datos de excepción. Obviamente fue porque lo estaba redefiniendo, ya que olvidé que lo declaraba en medio de la clase. Muchas gracias, ¡que tengan un gran fin de semana!
Dencker

o también puede escribir: función protegida _isAllowed () {return true; }
Andhi Irawan

2
Pero eso lo hará disponible para todos los administradores. Incluso si no debería tener acceso a él.
Marius
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.