Jak napisano tutaj :
Jeśli korzystasz z ograniczonych kont administratora, niektóre menu rozszerzeń innych firm mogą już nie działać. Powodem jest to, że domyślna wartość zwracana Mage_Adminhtml_Controller_Action::_isAllowed()
została zmieniona z true
na Mage::getSingleton('admin/session')->isAllowed('admin')
. Rozszerzenia, które nie zastępują tej metody w swoich kontrolerach administracyjnych, ponieważ nie używają ACL, teraz potrzebują uprawnienia „WSZYSTKO” .
Jedynym rozwiązaniem jest załatanie rozszerzeń i dodanie tej metody do wszystkich kontrolerów administratora:
protected function _isAllowed()
{
return true;
}
Lub jeśli faktycznie mają zasób ACL zdefiniowany w etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
Jak ustalić identyfikator zasobu
Tak adminhtml.xml
może wyglądać:
Weź nazwy węzłów poniżej acl/resources/admin/children
, pomijając kolejne children
węzły.
Jak utworzyć brakujące identyfikatory zasobów
Jeśli istnieje tylko <menu>
definicja, ale nie ma <acl>
definicji, możesz także zdefiniować własną (nie musi ona znajdować się w tym samym module, więc nie trzeba modyfikować plików innych firm):
Skopiować wszystko poniżej menu
celu acl/resources/admin/children
i usunąć <action>
węzły.
Automatyczna poprawka
Na stronie https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd znajduje się dobre narzędzie wiersza polecenia
Obsługuje większość brakujących _isAllowed()
wywołań całkiem dobrze, ale spowoduje uszkodzenie kodu z zaciemnionymi lub zaszyfrowanymi plikami źródłowymi, dlatego nadal należy ręcznie sprawdzać wyniki.