Patch SUPEE-6285 Accès refusé sur l’administration


Si vous passez le patch de sécurité SUPEE-6285 (et je vous le recommande fortement) il se trouve que vous pourriez avoir des problèmes d’accès sur l’administration de Magento.

Le cas se vérifie pour les utilisateurs qui sont rattachés un rôle spécifique qui n’a pas accès à tout (non administrateur donc), et qui voudraientt accéder à un onglet de configuration d’un module rajouté à Magento.

Par exemple, votre client est assigné à un rôle spécifique qui n’a pas accès à tous les onglets de l’administration de Magento, et il veut configurer son Slider en homepage : slider qui est une extension que vous avez été chercher sur le store Magento Connect.
Et bien c’est dans ce cas bien précis que l’utilisateur rencontrera ce beau message : acces-refuse-patch-supee-6285

La raison est que dans le patch, la valeur de

Mage_Adminhtml_Controller_Action::_isAllowed()

a été passé de « True » à Mage::getSingleton('admin/session')->isAllowed('admin')

Ce qui a pour conséquence pour les extensions qui ne surchargent pas cette méthode, d’avoir besoin de toutes les permissions (admin) pour accéder à la page de configuration.
Il faut donc aller ajouter un bout de code dans un fichier du module.

Voici la solution à ce problème génant :

Aller dans app\code\community\NomEditeurdumodule\Nomdumodule\controllers\Adminhtml et ouvrir le fichier PHP NomdumoduleController.php

Dans la class du module il faut ajouter ce bout de code comme dans l’exemple ci-dessous :

/** ajout-correction patch supee-6285 **/
protected function _isAllowed()
{
return true;
}
/** fin-correction patch supee-6285 **/

correction-extension-patch-6285

Avec ça, ça doit remarcher ! Et il faut bien sur le faire pour chaque module importé du Magento Connect et qui aurait une page de configuration sur l’administration.

Testé et approuvé sur Magento 1.7.0.2 et Magento 1.8. Doit aussi marcher sur Magento 1.9 mais je n’ai pas testé.