ตามที่เขียนไว้ที่นี่ :
หากคุณใช้บัญชีผู้ดูแลระบบที่ถูก จำกัด บางเมนูของส่วนขยายของบุคคลที่สามอาจไม่ทำงานสำหรับพวกเขาอีกต่อไป เหตุผลก็คือว่าค่าตอบแทนเริ่มต้นMage_Adminhtml_Controller_Action::_isAllowed()
มีการเปลี่ยนแปลงจากการtrue
Mage::getSingleton('admin/session')->isAllowed('admin')
ส่วนขยายที่ไม่ได้แทนที่วิธีนี้ในตัวควบคุมผู้ดูแลระบบเพราะพวกเขาไม่ได้ใช้ ACL ตอนนี้ต้องการสิทธิ์"ALL"
ทางออกเดียวคือการแก้ไขส่วนขยายและเพิ่มวิธีนี้ไปยังตัวควบคุมผู้ดูแลระบบของพวกเขาทั้งหมด:
protected function _isAllowed()
{
return true;
}
หรือถ้าพวกเขามีการกำหนดทรัพยากร ACL ในetc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
วิธีการกำหนดตัวระบุทรัพยากร
นี่คือลักษณะที่adminhtml.xml
อาจเป็นดังนี้:
ใช้ชื่อโหนดด้านล่างacl/resources/admin/children
โดยข้ามchildren
โหนดต่อไปนี้
วิธีสร้างตัวระบุทรัพยากรที่หายไป
หากมีเพียง<menu>
คำจำกัดความ แต่ไม่มี<acl>
คำจำกัดความคุณสามารถกำหนดด้วยตัวคุณเอง (ไม่จำเป็นต้องอยู่ในโมดูลเดียวกันดังนั้นจึงไม่มีไฟล์บุคคลที่สามที่ต้องแก้ไข) ::
คัดลอกทุกอย่างด้านล่างmenu
เพื่อacl/resources/admin/children
และลบ<action>
โหนด
แก้ไขอัตโนมัติ
มีเครื่องมือบรรทัดคำสั่งที่ดีโดย SupportDesk.nu ที่https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd
มันจัดการกับ_isAllowed()
สายที่ขาดหายไปได้ค่อนข้างดี แต่จะส่งผลให้รหัสที่ใช้งานไม่สมบูรณ์หรือมีการเข้ารหัสไฟล์ดังนั้นคุณยังควรตรวจสอบผลลัพธ์ด้วยตนเอง