En versiones de Magento 1.4.x si damos acceso a la gestión de la cache para un determinado rol que no sea admin, probablemente obtengamos un error de permisos «Access denied«. Lo descubrí cuando un cliente necesitaba borrar la cache de Magento de vez en cuando y no podía acceder aunque el permiso estuviera asignado en su rol.
¿Cómo solucionarlo?
Esto es debido a un bug alojado en el archivo app/code/core/Mage/Adminhtml/controllers/CacheController.php en la función _isAllowed().
1.-Copiamos el archivo en la ruta app/code/local/Mage/Adminhtml/controllers/ para evitar futuros problemas.
2.- Localizar la función _isAllowed()
3.-Reemplazar el código
protected function _isAllowed() { return Mage::getSingleton('admin/session')->isAllowed('cache'); }
por
protected function _isAllowed() { return Mage::getSingleton('admin/session')->isAllowed('system/cache'); }
Espero que sea de ayuda.