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 :
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));
          }
       }
    }
la variable $method contient bien 'retrieveByUsernameOrEmailAddress' et lorsque j'arrive sur "if ($callable = sfConfig::get...", le programme va tester "retrieveByUsername" et non "retrieveByUsernameOrEmailAddress"
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