Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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 .
[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
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
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
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
[lang=php] if ($dataform['role'] == "Admin") { return this->redirect()->toRoute('taRoute'); } else { return this->redirect()->toRoute('lautreRoute'); }
Hors ligne
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
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
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
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.
Hors ligne
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:
[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
Pages: 1