Bonjour tout le monde,
Voilà j'ai un petit soucis avec la redirection du login, j'aimerais que si l'on se connecte en tant qu'admin il me redirige vers les pages prefixées avec admin_ et si l'on se connecte en membre vers les pages prefixées membre_
Voici mon code : UsersController
function login(){
$this->layout = 'connexion';
if($this->request->is('post')){
if($this->Auth->login()){
// je pense que c'est ici qu'il faut mettre une condition en fonction du rôle rediriger vers
admin/index ou membre/index
$this->redirect($this->Auth->redirect());
}else{
$this->Session->setFlash("Votre login ou votre mot de passe ne correspond pas","notif",array('type'=>'error'));
}
}
}
AppController
class AppController extends Controller{
public $helpers = array('Text','Form','Html','Session','Cache');
public $components = array('Session','Auth','Cookie');
function beforeFilter(){
$this->Auth->loginAction = array('controller'=>'users','action'=>'login','admin'=>false,'membre'=>false);
$this->Auth->authorize = array('Controller');
if(!isset($this->request->params'prefix'])){
$this->Auth->allow();
}
if(isset($this->request->params'prefix']) && $this->request->params'prefix'] == 'admin'){
$this->layout = 'admin';
}
}
function isAuthorized($user){
if(!isset($this->request->params'prefix'])){
return true;
}
$roles = array(
'admin' => 10,
'membre' => 5
);
debug($roles$this->request->params'prefix']]);
debug($this->request->params'prefix']);
if(isset($roles$this->request->params'prefix']])){
$lvlAction = $roles$this->request->params'prefix']];
$lvlUser = $roles$user'role']];
debug($lvlAction);
debug($lvlUser);
if($lvlUser >= $lvlAction){
return true;
}else{
return false;
}
}
return false;
}
}
Dans ma BDD USER, j'ai un champs rôle (admin ou membre)
Merci du coup de main !
Enfaite, ton $this->Auth->redirect prend l'option de redirection que tu a mis dans ton component auth c'est à dire
class AppController extends Controller {
//...
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'posts', 'action' => 'index'), // la tu met l'endroit ou tu veux te redirigé après une connection
'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home') // la tu met l'endroit ou tu veux te redirigé après une déconnection
)
);
Voila.
Merci pour ta réponse Ch0c4 mais est -il possible de rediriger l'admin vers admin_index.ctp et si c'est un membre vers membre_index.ctp ? (suivant son statut)
Ah mon avis une fois connecté $this->Auth->user contient le role, tu fais donc une condition ou $role_index.ctp