redirection vers pages particuliere par role

Par gilles40, il y a 14 ans


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

Grafikart, il y a 14 ans

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

gilles40, il y a 14 ans

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

FlYos, il y a 14 ans

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 ;)

karmalo, il y a 14 ans

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, il y a 14 ans

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

FlYos, il y a 14 ans

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

gilles40, il y a 14 ans

Bonjour Steven,

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

Gilles