Symfony 4 : Gestion utilisateurs sans FOSUserBundle v2018 : Chapitre 2

Cet article est écrit en 3 parties :

Au chapitre précédent on a mis en place notre base de données et l’avons alimenté de quelques users, maintenant il va bien falloir qu’ils se connectent !

Vu que je suis très feignant, je vais encore utiliser le maker pour faire le travail à ma place. Mais avant on va supprimer la fonction login() du controller et aussi supprimer le template security/login.html.twig.vue, une fois fait on va lancer le maker :

Vous pouvez maintenant vous connecter à http://127.0.0.1:8000/login, et tada le beau formulaire ! Vous pouvez même essayer de vous logguer, vous devriez avoir une erreur du style « TODO: provide a valid redirect inside  » mais on verra ça plus tard, en attendant vous êtes bien connectés !

Si vous regardez de plus prés le maker a fait un gros boulot, il a non seulement créé la page twig et le controller mais aussi LoginFormAuthenticator (src/Security/LoginFormAuthenticator.php) et la modif du fichier security.yaml !

Quelques petites choses à savoir sur le LoginFormAuthenticator, il comporte une fonction supports, cette fonction sera appelé à chaque requête, il suffit de retourner vrai lorsque l’on est sûr que la page est bien une page de connexion et que l’on est sur une méthode POST, si ça retourne false, le traitement s’arrête (vous pouvez faire le test en modifiant le nom de la route « app_login ») si ça retourne vrai, le traitement continue sur la fonction getCredentials.

Cette dernière va tout simplement recuperer les identifiants de connexion et les stocker dans la session, puis va ensuite appeler getUser qui va se charger de vérifier que l’email existe bien.

Enfin la fonction checkCredentials va vérifier que le mot de passe est correcte.

Si tout s’est bien passé c’est onAuthenticationSuccess qui sera appelé pour en terminer avec cette connexion.

C’est là où on doit intervenir (et oui faut bien bosser un peu), on va créer un controller default avec une route homepage qui sera notre page principale. On va pour ça encore utiliser le fameux maker :

Une fois fait on va pouvoir modifier la onAuthenticationSuccess :

Ce qui serait intéressant maintenant que l’on est connecté, c’est de pouvoir se … déconnecter !

D’abord, modifions le fichier security.yaml pour y ajouter la section logout :

On va ajouter pour ça une fonction logout dans le SecurityController :

Et c’est tout !!

On va terminer en ajoutant une section « Se rappeler de moi » afin que l’utilisateur reste connecté quand il reviendra sur le site.

On va d’abord decommenter dans le fichier login.html.twig les lignes :

Puis ajouter dans le security.yaml :

Pour vérifier que ça fonctionne il suffit de regarder dans la console de chrome :

On voir bien que la date d’expiration est à 30 jours.

On verra dans les prochains chapitres comment s’inscrire, récupérer son mot de passe, modifier son profil et enfin gérer les droits d’accès à certaines pages.

Vous pourrez retrouver le code de l’ensemble du projet sur github : https://github.com/gponty/userDemo2018

4 commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.