Bonjour à tous,
Je me tourne vers vous au sujet de la mise en place d'un espace d'administration.
Pour ce faire, le plus simple et le plus utilisé est de mettre un préfixe 'admin' et de définir le code de l'espace d'administration dans des fonctions commençant par 'admin_'.
Pour des raisons de sécurité, je ne souhaite pas utiliser le préfixe admin, mais une chaîne de caractères plus complexe. Restons simple pour l'exemple et choisissons test123.
Je souhaite faire en sorte que l'espace d'administration ne soit accessible qu'à l'adresse example.com/test123 et à elle seule (et pas non plus via example.com/admin). L'autre difficulté est que je souhaite conserver 'admin_' comme préfixe pour mes fonctions et ne pas être obligé de les mettre à jour pour 'test123_'.
J'ai testé différentes configurations de routes mais impossible d'arriver au fonctionnement désiré. Soit l'espace d'administration est accessible via /admin et /test123, soit il n'est pas accessible du tout.
Je pense que ce doit être facilement réalisable, mais je ne vois pas ce que je pourrais avoir manqué, ni forcément, si la solution se joue au niveau du préfixe, du routing voir du .htaccess.
J'espère avoir été clair, si vous avez de plus d'informations, n'hésitez pas...
Merci d'avance
" Soit l'espace d'administration est accessible via /admin et /test123" Quand tu es là tu met une route '/admin/*' pour rediriger tous les chemin admin et éviter que /admin fonctionne toujours.
Flohw le souci c'est qu'avec cette solution il va devoir renommer ses action en test123_... et c'est pas forcément pratique.
déjà c'est pas le htaccess parce que les url ne sont pas créées grace a ca mais bien grace au routing :)
voila ce que j'ai trouvé sur la doc :
Configure::write('Routing.prefix', 'test123');
Router::connect('/test123/*', array('test123' => true));
et il faut que tu ajoutes fasses tes liens d'administration : $this->Html->link('texte', array('controller' => 'c', 'action' => 'a', 'test123' => true));
http://book.cakephp.org/fr/view/945/Configuration-des-Routes (section 3.4.5.6, l'article anglais est plus complet mais je ne l'ai pas compris, suffit d'enlever /fr de l'url mais tu savais ^^)
ha oui il voulait l'eviter et la fatigue m'a fait oublier et confondre, c'est admin et pas test123 sur la premiere ligne ;)
Merci à tous les deux !
@flohw : comme l'a dit Jonathan et comme tu l'as mentionné par la suite, la solution que tu proposes implique de renommer mes actions en test123, ce qui en cas de modification, sera assez lourd et difficilement réadaptable...
@Grafikart : j'avais en effet essayé l'ajout d'une route '/admin/*' sans succès. J'ai procédé à un nouvel essai suite à ta proposition et là, cela fonctionne. La différence entre ma première route est ma deuxième : la suppression de l'option 'admin' => false dans la route. Je pensais qu'en utilisant le préfixe 'admin' dans le fichier core.php, cela impliquait que pour la route destinée à l'annuler, il me fallait préciser 'admin' => false. Au final, ce n'est pas le cas, il ne faut rien préciser.
En résumé, cela donne :
Configure::write('Routing.prefix', 'admin');
Router::connect('/admin/*', array('controller' => 'defaultcontroller', 'action' => 'defaultaction'));
Router::connect('/test123/*', array('controller' => 'defaultcontroller', 'action' => 'defaultaction', 'admin' => true));
Tout fonctionne comme je le souhaitais. Merci encore à vous 2 et bravo pour votre rapidité !