Symfony make:user, auth, registration-form et reset-password
Afin de mettre en place une authentification dans notre application Symfony nous allons utiliser le makerbundle.
Pour aller vite voici la liste des commandes utilisées au long de cet article. Vous pouvez les exécuter et vous laissez guider :
composer require symfonycasts/reset-password-bundle
php bin/console make:user
php bin/console make:auth
php bin/console make:registration-form
php bin/console make:reset-password
Nous commençons par ajouter symfocasts/reset-password-bundle
dont nous aurons besoin plus tard.
Nous exécutons php bin/console make:user
et suivons le guide:
Nous nous retrouvons donc avec notre entité User et un fichier security.yml
mis a jour. Étape suivante, la page de connexion. Pour cela nous exécutons: php bin/console make:auth
Encore une fois le fichier security.yml
est mis a jour. Nous avons cette fois un contrecoller et un template, c’est basique mais fonctionnel, c’est maintenant un bout de code de votre projet, a vous le faire vivre et de le modifier.
Avant d’aller plus loin ouvrez le fichier LoginFormAuthenticator direction la méthode onAuthenticationSuccess
puis mettez a jour la redirection par défaut lors d’une connexion:
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
return new RedirectResponse($targetPath);
}
// For example : return new RedirectResponse($this->urlGenerator->generate('some_route'));
throw new \Exception('TODO: provide a valid redirect inside '.__FILE__);
}
Il est bien beau de pouvoir se connecter encore faudrat-il pouvoir s’enregistrer. Nous exécutons donc php bin/console make:registration-form
Cette fois nous avons tout ce qu’il faut pour s’enregistrer:
Dernière étape, le récupération de mots de passe, encore une fois nous exécutons php bin/console make:reset-password
Et voila, grâce a ces 4 commandes vous avez:
- une entité User
- une page de connexion
- une page d’enregistrement
- une page de récupération de mot de passe
Tous les fichiers générés sont les vôtre et peuvent/doivent être modifiés en fonction de vos besoins.