Tag cloud
pierre martin web logiciel ASP.NET framework Méthode loi twitter css stage motivation développement web routes CakePHP xhtml lithium astuce wordpress mvc scrum ie6 productivité migration cakefest jsf filezilla conférences blog référencement java pense-bête communauté conception behavior outils open source MySQL php débogage
-
Jérémie
-
Pierre Martin
-
Jérémie
-
Pierre Martin
-
Vincent


Une zone d’administration en 3 minutes !
Dans un site web il devient de plus en plus fréquent (pour ne pas dire obligatoire) de devoir mettre en place une zone d’administration.
Certaines fois l’accès à celle-ci doit être réglé finement et doit permettre au client de modifier simplement son mot de passe, ce qui nous forcera à s’interfacer avec la base de données et le composant Auth de CakePHP … voir même les ACL. Pour cela, jetez un oeil au tutorial « Interface d’administration d’un site CakePHP avec le Composant Auth » sur formation CakePHP ! Mais dans d’autres cas, cela n’est pas la peine d’aller aussi loin …
Je vais ici simplement présenter un bout de code qui vous permettra d’obtenir une sécurisation efficace de cet espace basée sur l’authentification HTTP du Composant Securité, en quelques lignes de code seulement !
La mise en place de la zone d’administration s’effectue en deux étapes :
Créer les actions et redirections vers la zone d’administration
Il est inutile de détailler la procédure à suivre dans cet article, cela serait entièrement redondant avec la première partie de l’article mentionné plus haut. Je vous invite donc à suivre la méthode décrite sur formation Cakephp.
Sécuriser toutes les actions d’administration
La solution proposée par Kalt est relativement lourde à mettre en place dans le cas où l’on veut bloquer simplement la zone par mot de passe sur un « petit » site web ! Pour cette raison, nous utiliserons le « Security Component » qui vous permet de gérer divers aspects de la sécurité d’un site web.
La configuration se fera dans le fichier « app_controller.php », et plus particulièrement dans le « beforeFilter() ». Si vous avez suivi le précédent tutorial, vous avez déjà dû créer cette méthode pour fixer un layout dynamiquement.
Il vous suffit donc d’importer le composant grâce à l’ajout de l’attribut de modèle suivant :
Ensuite, il ne reste plus qu’à recopier le code d’Authentification décrit dans la documentation du framework et le tour est joué …
Désormais, à chaque appel de type « http://monsite-cakephp.fr/admin/controller/action/* », la méthode « admin_action » du controller sera exécutée après que l’utilisateur ait saisi un mot de passe correct !
Quelques limitations
J’ai essayé d’implémenter cette solution sur un serveur mutualisé OVH mais cela ne fonctionne pas. Après avoir regardé un peu plus précisément il semble que OVH ne renseigne pas les variables « PHP_AUTH_USER » et « PHP_AUTH_PW ».
Aussi, il devrait y avoir un cas spécial à rajouter dans le core de cake dans le fichier basics.php pour la méthode « env() » … j’ai tenté plusieurs choses en 15minutes, mais je ne suis pas arrivé à parvenir à mes fins et n’ai pas plus de temps à y consacrer ! Si quelqu’un se sent l’âme de bidouiller …