Bonjour,
Je suis en train de mettre en place le login via sfGuard, et j'ai trouvé un truc bizarre pour ne pas dire étrange :
La saisie se fait via le mail et mot de passe, quand je fais un xdebug sur le php "sfGuardValidatorUser" dont voici une portion de code :
la variable $method contient bien 'retrieveByUsernameOrEmailAddress' et lorsque j'arrive sur "if ($callable = sfConfig::get...", le programme va tester "retrieveByUsername" et non "retrieveByUsernameOrEmailAddress"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 $allowEmail = sfConfig::get('app_sf_guard_plugin_allow_login_with_email', true); $method = $allowEmail ? 'retrieveByUsernameOrEmailAddress' : 'retrieveByUsername'; // don't allow to sign in with an empty username if ($username) { if ($callable = sfConfig::get('app_sf_guard_plugin_retrieve_by_username_callable')) { $user = call_user_func_array($callable, array($username)); } else { $user = $this->getTable()->retrieveByUsername($username); } // user exists? if($user) { // password is ok? if ($user->getIsActive() && $user->checkPassword($password)) { return array_merge($values, array('user' => $user)); } } }
ce qui veut dire que la validation par mail ne fonctionne pas puisqu'il va faire un select via le pseudo et non via l'email.
Etrange non?
Comment l'obliger à faire le test via le mail sans remplacer retrieveByUsername" par "retrieveByUsernameOrEmailAddress" ou ajouter un test sur $methode avec un else, car c'est l'installation par defaut de sfGuard, et en règle générale il est absolument déconseiller de modifier les sources !
Si vous pouvez m'éclairer
Merci![]()
Partager