Bonjour,
mon app a 2 espaces membres un pour les commerçants et un pour les acheteurs. mais j'arrive pas à mettre en place ce système dans mon appController.
merci d'avance
Décrivez ici votre code ou ce que vous cherchez à faire
if(($this->request->params['controller'] == 'commercants') && ($this->request->params['action'] == 'login')) {
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'commercants',
'action' => 'login'
],
'authenticate' => [
'Form' => [
'fields' => ['username' => 'email','password'=>'password']
]
]
]);
}
elseif(($this->request->params['controller'] == 'producteurs')
&& ($this->request->params['action'] == 'login')) {
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'producteurs',
'action' => 'login'
],
'authenticate' => [
'Form' => [
'fields' => ['username' => 'email','password'=>'password']
]
]
]
);
}
Je te conseille de passer pzr des ACL c'est plus simple pour gerer les groupes
moi je le gère autre avec les préfixe. tu peux utiliser un même formulaire pour connecter les deux type et dans ta table user tu as un champ role ou space à toi de voir qui vaut commerçant ou acheteur une fois le user connecter tu le redirige vers son espace appropier avec la valeur role/space
Bonjour,
Voila ce que je fais quand je dois avoir plusieurs utilisateurs sur le site ( admin + user par exemple)
Tu charges d'abord ton component (Auth) dans la methode initialize ( $this->loadComponent('Auth');)
puis dans le beforefilter tu ajoutes le code ci-dessous (pense à déclarer tes routes)
public function beforeFilter( Event $event ) {
if ($this->request->param('prefix') && $this->request->param('prefix') == 'admin') {
$this->Auth->config([
'authorize' => ['Controller'], // facultatif
'authenticate' => [
'Form' => [
'fields' => ['username' => 'mail'],
'userModel' => 'Administrators'
],
],
'loginAction' => [
'controller' => 'Administrators',
'action' => 'login',
'prefix' => 'admin',
],
'logoutRedirect' => [
'controller' => 'Administrators',
'action' => 'login',
'prefix' => 'admin',
],
'storage' => [
'className' => 'Session',
'key' => 'Auth.Admin',
],
]);
}else if ($this->request->param('prefix') && $this->request->param('prefix') == 'user') {
$this->Auth->config([
'loginAction' => [
'controller' => 'Users',
'action' => 'login',
'prefix'=>false
],
'loginRedirect' => [
'controller' => 'Users',
'action' => 'index',
'prefix'=>'user'
],
'logoutRedirect' => [
'controller' => 'Users',
'action' => 'login',
'prefix'=>false
],
'authenticate'=>[
'Form'=>[
'fields' => ['username' => 'email'],
]
]
]);
} else {
$this->Auth->allow();
}
}
La clé 'Storage' est très importante car c'est elle qui va permettre de stocker les 2 sessions
ensuite pour acceder aux données de l'admin utilise plutôt $this->request->session()->read('Auth.Admin');
En espérant t'avoir aidé.