Như được viết ở đây :
Nếu bạn sử dụng tài khoản quản trị viên bị hạn chế, một số menu của tiện ích mở rộng bên thứ ba có thể không hoạt động nữa đối với họ. Lý do là giá trị trả về mặc định của Mage_Adminhtml_Controller_Action::_isAllowed()
đã được thay đổi từ true
thành Mage::getSingleton('admin/session')->isAllowed('admin')
. Các tiện ích mở rộng không ghi đè phương thức này trong bộ điều khiển quản trị viên vì chúng không sử dụng ACL, giờ cần đặc quyền "TẤT CẢ" .
Giải pháp duy nhất là vá các phần mở rộng và thêm phương thức này vào tất cả các bộ điều khiển quản trị của chúng:
protected function _isAllowed()
{
return true;
}
Hoặc nếu họ thực sự có tài nguyên ACL được xác định trong etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
Cách xác định mã định danh tài nguyên
Đây là cách một adminhtml.xml
có thể trông như thế nào:
Lấy tên nút bên dưới acl/resources/admin/children
, bỏ qua các children
nút sau .
Cách tạo định danh tài nguyên bị thiếu
Nếu chỉ có một <menu>
định nghĩa nhưng không có <acl>
định nghĩa, bạn cũng có thể định nghĩa riêng của mình (nó không phải nằm trong cùng một mô-đun, do đó không có tệp bên thứ 3 nào phải được sửa đổi) ::
Sao chép mọi thứ bên dưới menu
để acl/resources/admin/children
và loại bỏ các <action>
nút.
Tự động sửa
Có một công cụ dòng lệnh tốt của SupportDesk.nu tại https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd
Nó xử lý hầu hết các _isAllowed()
cuộc gọi bị thiếu khá tốt nhưng sẽ dẫn đến mã bị hỏng với các tệp nguồn bị mã hóa hoặc bị mã hóa, vì vậy bạn vẫn nên kiểm tra kết quả theo cách thủ công.