ここに書かれているように:
制限された管理者アカウントを使用している場合、サードパーティの拡張機能の一部のメニューがそれらに対して機能しなくなる可能性があります。のデフォルトの戻り値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>
ノードを削除します。
自動修正
https://gist.github.com/raybogman/eec47237b8ef0d4dd0fdに SupportDesk.nuによる優れたコマンドラインツールがあります。
ほとんどの欠落した_isAllowed()
呼び出しを非常にうまく処理しますが、難読化または暗号化されたソースファイルでコードが破損するため、結果を手動で確認する必要があります。