โมดูลที่กำหนดเอง: การเข้าถึงถูกปฏิเสธ (ปัญหา 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');  

}

DUH! นั่นมัน ฉันพยายามเพิ่ม _isAllowed () แต่นั่นทำให้ฉันมี 503 ฉันกำลังทำงานบนเซิร์ฟเวอร์ที่ใช้งานอยู่ดังนั้นฉันจึงไม่เห็นข้อมูลข้อยกเว้น เห็นได้ชัดว่ามันเป็นเพราะฉันประกาศใหม่ในขณะที่ฉันลืมฉันประกาศไว้ในชั้นกลาง ขอบคุณมัดมีวันหยุดสุดสัปดาห์ที่ดี!
Dencker

หรือคุณสามารถเขียน: ฟังก์ชันที่ได้รับการป้องกัน _isAllowed () {return true; }
Andhi Irawan

2
แต่นั่นจะทำให้พร้อมใช้งานสำหรับผู้ดูแลระบบทุกคน แม้ว่าเขาจะไม่สามารถเข้าถึงมันได้
Marius
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.