जैसा यहां लिखा गया है :
यदि आप प्रतिबंधित व्यवस्थापक खातों का उपयोग करते हैं, तो तृतीय पक्ष एक्सटेंशन के कुछ मेनू उनके लिए अब और काम नहीं कर सकते हैं। कारण यह है कि डिफ़ॉल्ट रिटर्न मान Mage_Adminhtml_Controller_Action::_isAllowed()
को से बदल दिया गया true
है Mage::getSingleton('admin/session')->isAllowed('admin')
। एक्सटेंशन जो इस पद्धति को उनके व्यवस्थापक नियंत्रकों में ओवरराइड नहीं करते हैं क्योंकि वे एसीएल का उपयोग नहीं करते हैं, अब "सभी" विशेषाधिकार की आवश्यकता है।
एकमात्र उपाय एक्सटेंशन पैच करना है और इस पद्धति को उनके सभी व्यवस्थापक नियंत्रकों में जोड़ना है:
protected function _isAllowed()
{
return true;
}
या अगर वे वास्तव में एक एसीएल संसाधन में परिभाषित हैं 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>
परिभाषा नहीं है , तो आप अपने स्वयं को भी परिभाषित कर सकते हैं (यह एक ही मॉड्यूल के भीतर नहीं होना चाहिए, इसलिए किसी भी 3 पार्टी फ़ाइलों को संशोधित नहीं करना होगा) ::
नीचे सब कुछ कॉपी menu
करने के लिए acl/resources/admin/children
और हटाने <action>
नोड्स।
स्वचालित फिक्स
SupportDesk.nu द्वारा https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd पर एक अच्छा कमांड लाइन टूल है
यह अधिकांश गायब _isAllowed()
कॉलों को अच्छी तरह से संभालता है लेकिन परिणाम में टूटे हुए कोड के साथ obfuscated या एन्क्रिप्टेड स्रोत फ़ाइलें होंगी, इसलिए आपको अभी भी मैन्युअल रूप से परिणामों की जांच करनी चाहिए।