Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 26-06-2013 15:58:48

Loouu
Nouveau membre
Date d'inscription: 26-06-2013
Messages: 3

routage après l'authetification selon le role de l'utilisateur

Bonjour , je vient de débuter ma formation en ZF2 , pour l'authentification j'ai développe un module qui fonctionne correctement juste je bloque   pour le choix du root pour les utilisateurs qui s'authentifie . Pour bien expliquer si Admin se connecte il sera dirigé ver la root  'Admin' et si Visiteur vers la root ' visiteur' , pour mon cas tous les utilisateur qui s'authentifie sont envoyé vers la méme route

Voici la fonction .

Code:

[lang=php]protected function authenticate($form, $viewModel)
    {
        $request = $this->getRequest();
        if ($request->isPost()) {
            $form->setData($request->getPost());
            if ($form->isValid()) {
                $dataform = $form->getData();
                
                $this->authService->getAdapter()
                                       ->setIdentity($dataform['username'])
                                       ->setCredential($dataform['password']);
                $result = $this->authService->authenticate();
                if ($result->isValid()) {
                    //authentication success
                    $resultRow = $this->authService->getAdapter()->getResultRowObject();
                   
                    $this->authService->getStorage()->write(
                         array('id'          => $resultRow->id,
                                'username'   => $dataform['username'],
                                'ip_address' => $this->getRequest()->getServer('REMOTE_ADDR'),
                                'user_agent'    => $request->getServer('HTTP_USER_AGENT'),
                                'role' => $dataform['role'],)
                    );
                    
                    return $this->redirect()->toRoute('projet', array('action' => 'index'));;       
                } else {
                    $viewModel->setVariable('error', 'Login Error');
                }
            }
        }
    }

Merci

Hors ligne

 

#2 26-06-2013 17:02:36

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: routage après l'authetification selon le role de l'utilisateur

Salut ça me semble pas super compliqué tu as $dataform['role'] donc tu tests la valeur et suivant la valeur tu redirige sur la bonne route.

Hors ligne

 

#3 26-06-2013 17:10:30

Loouu
Nouveau membre
Date d'inscription: 26-06-2013
Messages: 3

Re: routage après l'authetification selon le role de l'utilisateur

Merci pour l'info , j'ai testé sa peut etre avec un movais syntaxe . Pouvez vous m'ecrire un exemple de recuperation avec Dataform etla comparaison avec le role authentifier . Je m'excuse mais je suis un peut bleu

Hors ligne

 

#4 26-06-2013 18:22:40

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: routage après l'authetification selon le role de l'utilisateur

Là je peux pas trop te donner d'exemple je sais pas comment est foutu ton modèle de données. En gros tu fais un

Code:

[lang=php]
if ($dataform['role'] == "Admin") { 
return this->redirect()->toRoute('taRoute'); 
} else { 
return this->redirect()->toRoute('lautreRoute');
}

Hors ligne

 

#5 26-06-2013 19:05:53

Loouu
Nouveau membre
Date d'inscription: 26-06-2013
Messages: 3

Re: routage après l'authetification selon le role de l'utilisateur

Merci infiniment pour ton aide c'est la même condition que j'ai utilisé , et a chaque fois je reçoit cette erreur
((  Notice: Undefined index: role in /home/ali/Bureau/zend/bf/module/SanAuthWithDbSaveHandler/src/SanAuthWithDbSaveHandler/Controller/AuthController.php on line 65
Call Stack ))

La ligne 65 c'est ou je commence la déclaration de   $dataform['role'] , c'est un peu étrange car le condition est clair et le champ role je l'utilise dans d'autre fonctionalité .

Hors ligne

 

#6 27-06-2013 09:38:15

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: routage après l'authetification selon le role de l'utilisateur

On peut pas vraiment plus t'aider à ce niveau là. Tu utilises des classes que l'on ne connait pas et que ne font pas parti du Zend Framework 2 (de base). On est pas devin faut que tu cherches un peu. Là il te dit que dans ta variable l'index role n'existe pas donc à toi de voir pourquoi.

Hors ligne

 

#7 27-06-2013 15:44:28

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: routage après l'authetification selon le role de l'utilisateur

Peut-tu mettre ton code au moment ou tu déclare ton $dataform['role']?

Parce que dans le principe si tu déclare une variable, peu importe ce qu'il y a dedans, tu devrais pouvoir la trouver.
peut être une erreur de syntaxe lors de ta déclaration?

Dernière modification par flobrflo (27-06-2013 15:45:36)

Hors ligne

 

#8 28-06-2013 10:14:49

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: routage après l'authetification selon le role de l'utilisateur

Si je comprends bien ce que tu écris, il me suffit d'être inscrit à ton site pour avoir des accès admin. Ça commence bien. big_smile


22914720

Hors ligne

 

#9 28-06-2013 11:21:15

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: routage après l'authetification selon le role de l'utilisateur

J'imagine qu'il a simplifier pour mieux identifier le problème ^^

tiens, un petit lien qui pourra s'en doute t'aider, il y a un exemple bien fait de l'utilisation des "roles" après authentification:
http://stackoverflow.com/questions/1734 … -login-zf2

Après zf2 appel ça un role mais tu pourrais très bien appeler dans ta base le champ "access" ou encore "permission" (etc..), tu leurs assigne plusieurs valeurs: varchar ou int (exemple: "user", "admin", "superadmin" ou bien 0, 1, 2)

et ensuite tu vérifie ton champ toi même:

Code:

[lang=php]$user = //celui cherché dans ta base grâce à la connexion

if ($user->getPermission() == "admin" /* ou 1*/) {
     return this->redirect()->toRoute('RouteAdmin');
} elseif($user->getPermission() == "Superadmin" /* ou 2*/){
     return this->redirect()->toRoute('RouteSuperAdmin');
} else{
     return this->redirect()->toRoute('RouteUser');
}

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages