redirection admin

Par sylvain, il y a 11 ans


bonjour,
je ne vois pas ou configurer la redirection admin.
Je suis en local et je fais localhost/monapp/admin et ca me redirige sur http://monapp.com/monapp/user/login

merci d'avance

19 réponses

Muxabble, il y a 11 ans

Sur Cake 2 ? 3 ?
Bonjour, eh bien dans ton AppController tu doit avoir une ligne du style pour Cake 3

'loginAction' => [ 'controller' => 'Users', 'action' => 'login', 'prefix'=> false ],

Ou sur Cake 2

public $components = array( 'Session', 'Auth' => array( 'loginRedirect' => array('controller' => 'users', 'action' => 'login'), 'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home') ) );

Au passage la doc

sylvain, il y a 11 ans

non il n'y a pas de component Auth dans AppController , ni nulle part d'ailleurs. C'est ca qui est mysterieux

Muxabble, il y a 11 ans

Ba crée le alors ^^

sylvain, il y a 11 ans

mais non il fonctionne. c'est ca le probleme, et je ne sais pas comment ca fonctionne.
cependant en erreur

#3 {main} 2015-03-23 01:32:08 Error: [MissingControllerException] Controller class AdminController could not be found. Exception Attributes: array ( 'class' => 'AdminController', 'plugin' => NULL, ) Request URL: /labo/admin Stack Trace: #0 /Users/sylvain/Sites/labo/app/webroot/index.php(118): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
Muxabble, il y a 11 ans

tes routes sont comment ?

Muxabble, il y a 11 ans

Au passage cest pas plutot Dashboard au lieu de Drashboard ? et la je ne sais pas du tout mais pourquoi tu as $admin ?

sylvain, il y a 11 ans

voila ma route

$admin = 'admin'; Router::connect('/', array('controller' => 'home', 'action' => 'index')); Router::connect('/admin', array('controller' => 'Drashboard', 'action' => 'index', 'admin' => true)); Router::connect('/default', array('controller' => 'pages', 'action' => 'display', 'home')); Router::connect('/', array('controller' => 'home', 'action' => 'index')); /** * ...and connect the rest of 'Pages' controller's URLs. */ Router::connect('/item/*', array('controller' => 'item', 'action' => 'index'));
sylvain, il y a 11 ans

je reprends du code et je ne comprend pas tout, mais bon c'est juste que le precedent dev, il est a mal othographié le drashboard, mais comme il a bien mis partout ca marche.
Le probleme aujourdhui c'est que je ne comprends pas comment il fonctionne admin

Muxabble, il y a 11 ans

Pour moi sa devrais fonctionné, dans boostrap ou config tu as bien decomenté le prefix ?

Lartak, il y a 11 ans

Bonjour.
L'erreur retournée est plutôt simple à comprendre pourtant :

Controller class AdminController could not be found

CakePHP te dit que le controller admin n'est pas trouvé.
Il ne te faut pas oublier d'activer le prefixe admin dans le fichier core.php.

Configure::write('Routing.prefixes', ['admin']);
Muxabble, il y a 11 ans

non mais normalement vu ces routes il devrait acceder a DashboardController

sylvain, il y a 11 ans

J'ai régardé le core et le prefix admin semble etre bien present.
Ce qui me semble, c'est qu'il a shunter le system de cakephp et mis en place son systeme.

Lartak, il y a 11 ans

non mais normalement vu ces routes il devrait acceder a DashboardController

Sauf que si l'erreur qui lui est retournée est que CakePHP cherche le controller admin mais ne le trouve pas, c'est qu'il y a un problème.

non il n'y a pas de component Auth dans AppController , ni nulle part d'ailleurs. C'est ca qui est mysterieux

Ba crée le alors ^^

mais non il fonctionne. c'est ca le probleme, et je ne sais pas comment ca fonctionne.

Tu dis qu'il n'y a le component Auth nulle part alors que juste après tu dis qu'il fonctionne bien ?
Il faudrait savoir et si CakePHP renvois sur l'action de connexion par défaut, c'est forcément que le composant Auth est utilisé quelque part et que l'application est configuré pour l'utiliser, regardes bien si quelque part tu as un $this->Auth... (un $this->Auth->allow par exemple) ou une fonction isAuthorized dans un controller.

De toute manière, comme ça nous ne pouvons pas trop t'aider, si tu as repris l'application de quelqu'un d'autre, que tu l'as sous les yeux mais que tu ne trouves pas d'où ça peut venir, ce sera plus difficile pour nous.
Pourquoi tu ne demandes pas des précisions à la personne à qui tu as pris la suite ?

Lartak, il y a 11 ans

Le composant Auth est utilisé dans un controller (Users).

sylvain, il y a 11 ans

Bon si j'ai bien compris
la route ci présente

Router::connect('/admin', array('controller' => 'Drashboard', 'action' => 'index', 'admin' => true));

dit que si je tape /admin je serais redirigé vers Dashboard index
hors le controller dashboard est vide

class DrashboardController extends AppController { public function admin_index(){ } }

Question que je me pose, comment devine t'il que je dois me loggue et a surtout a quel moment il me redirige vers /users/login ?

Muxabble, il y a 11 ans

Tout ce passe dans la fonction isAuthorized

sylvain, il y a 11 ans

Je ne vois pas a quel moment il fait appel a isAuthorized dans le code

Lartak, il y a 11 ans

Dans le controller Users, il est plusieurs fois fait appel au composant Auth :

AuthComponent::user('id') AuthComponent::user('role') etc ...

À partir du moment où le composant Auth est utilisé, si un système d'autorisation n'est pas défini explicitement, il bloque quasiment tous les accès et comme le modèle par défaut est User et l'action login, il renvoit sur l'action login du controller Users.

Le composant Auth est également appelé dans le modèle Category.

sylvain, il y a 11 ans

excellent merci , je comprend mieux maintenant.