[Symfony2][FOSUserBundle] Utiliser l’adresse mail pour se connecter

FOSUserBundle a son propre provider pour que vous pouvez utiliser non seulement le nom d’utilisateur, mais aussi l’email pour ce connecter. Il suffit de changer une ligne dans security.yml


# app/config/security.yml
security:
    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email

Par contre si vous voulez utiliser seulement l’adresse mail pour se connecter, il faut passer par une autre méthode. Selon la documentation d’une ancienne version de FosUserBundle, la méthode le plus « propre » et la moins risquer et de passer par un provider personnalisé.


<?php
namespace FOS\UserBundle\Security;

class EmailUserProvider extends UserProvider
{
    protected function findUser($username)
    {
        return $this->userManager->findUserByUsernameOrEmail($username);
    }
}

Comme vous pouvez remarquer notre provider personnalisé hérite de celui de FosUserBundle, et on a surchargé seulement une seule méthode.

Maintenant, nous allons l’ajouter comme un service à notre application :


<parameters>
    <parameter key="gmu.user_provider.email.class">Gmu\UserBundle\Security\GmuUserProvider</parameter>
  </parameters>
  <services>
    <service id="gmu.user_provider.email">
      <argument type="service" id="fos_user.user_manager" />
    </service>
  </services>

Nous avons injecté FOSUserManager parce que la classe parente en a besoin. Après cela, nous indiquant qu’on va utiliser notre service comme le provider par défaut :


# app/config/security.yml
security:
    providers:
        fos_userbundle:
            id: gmu.user_provider.email
Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s