Bonsoir,
je cherche apres un login a rediriger l'utilisateur vers la page index du role correspondant a son login
exemple: admin vers page administration, membre vers page membre ainsi de suite.

j'ai essayer de modifier le code ci dessous mais je n arrive a rien de concluant.

function login(){
        if($this->request->is('post')){
            if($this->Auth->login()){
                return $this->redirect($this->Auth->redirect());
            }else{
                $this->Session->setFlash("Votre login ou votre mot de passe ne correspond pas","notif",array('type'=>'error'));
            }
        }

    }

merci d'avance

Gilles

7 réponses


FlYos
Réponse acceptée

Il est normal que tu est tjs redirigé vers la page admin:

if($d = 'admin')

Tu ne vois rien qui cloche ?

Lorsque tu test une chaine de caractère avec le contenu d'une variable, je te conseil d'inversé les éléments comme ceci:

if('admin' = $d)

Si tu test ça tu verra une erreur alors quand dans ta version non ;)

FlYos
Réponse acceptée

Bonjour Gilles,
Alors là, faut retourner aux bases mon grand ;)

Lorsque tu fait ça:

if($d = 'admin')

tu ne teste pas une égalité, mais tu test si l'affectation. Autrement dis, dans ce test tu réaffecte à chaque fois ta variable $d à 'admin', donc ton test est toujours valide et donc php rentre systématiquement dans ce if.

Pour corrigé il suffit de faire:

if('admin' == $d)

normalement ça devrait fonctionner.

Steven

Tu récupère le role => $this->Auth->user('role') puis tu continue :)

gilles40
Auteur

Bonjour Grafikart et tout les autres,

j'ai essayer de faire comme tu dit je recupere bien le role mais apres pour la page des admin cela fonctionne mais pour les user je suis toujours rediriger vers la page admin voila le bout de code en dessous:

function login(){
        if($this->request->is('post')){
            if($this->Auth->login()){
                $d = $this->Auth->user('role');
                /*debug ($d;*/
                    if($d = 'admin'){
                        $this->redirect($this->Auth->redirect('admin/pages'));
                    }elseif($d = 'user'){
                        $this->redirect($this->Auth->redirect('/'));
                    }
                /*return $this->redirect($this->Auth->redirect('admin/pages'));*/
            }else{
                $this->Session->setFlash("Votre login ou votre mot de passe ne correspond pas","notif",array('type'=>'error'));
            }
        }

    }

j'arrive pas a comprendre mon erreur, merci d'avance pour l'aide que vous pourrez m'apporter

Gilles

Salut

j'ai eu le même souci que toi, que ce soit membre ou admin, toujours redirigé vers l'admin

Donc, j'ai ajouté une fonction dans mon controller admin

function membre_index(){
        $this->redirect(array('controller'=>'accueils', 'action'=>'index'));
    }

et je les redirige vers la page ou les membres doivent aller et ca fonctionne très bien

gilles40
Auteur

Bonjour,

merci FlYos effectivement j ai une erreur qui apparait mais je ne voit pas comment m en sortir!!!

@ karmalo si je ne trouve pas d'autres solutions je passerai comme ca

Gilles

gilles40
Auteur

Bonjour Steven,

mais ou avais-je la tête.... merci à toi maintenant effectivement cela fonctionne normalement.
@+

Gilles