Laravel 5

Ajouter la confirmation de l’email

Laravel est un framework très complet mais à mon goût il lui manque quelque chose de très utile : la confirmation de l’email lors d’une inscription. Personnellement je l’ajoute systématiquement et j’ai l’impression que je ne suis pas le seul. Alors plutôt que d’écrire toujours les mêmes choses je me suis mis en quête d’un package pratique pour me faciliter la tâche mais je n’ai pas trouvé quelque chose de satisfaisant.

Alors je me suis remonté les manches pour en faire un qui me semble apporter toutes les fonctionnalités requises et qui est suffisamment souple pour s’adapter à toutes les situations (du moins j’espère). Je l’ai fait pour la version 5.4 parce que je suppose que tous les nouveaux projets seront fondés sur cette nouvelle version.

L’installation

Le package est sur Github :

La procédure d’installation est détaillée sur la page du projet.

Il y a deux situations :

  • un projet tout neuf avec utilisation de php artisan make:auth. Dans ce cas l’installation est très facile.
  • un projet existant avec des vues de login et de registration personnalisées. Dans ce cas il faut ajouter du code aux deux vues pour avoir les alertes de la confirmation.

Dans cet article je vais partir de la première hypothèse.

L’inscription (register)

Avec la création automatique des vues de Laravel on a ce formulaire d’inscription :

Lorsqu’un utilisateur s’inscrit :

Classiquement il est automatiquement connecté. Mais avec la confirmation on lui envoie un email :

Et on lui affiche une alerte :

Le blocage

Le login

Maintenant tant que la confirmation n’a pas eu lieu on bloque le login :

Le package possède la version française des messages :

Dans le message on propose d’envoyer à nouveau l’email de confirmation.

Le renouvellement du mot de passe

Il faut aussi bloquer la connexion automatique après un renouvellement du mot de passe. C’est fait automatiquement par le package.

La confirmation

Quand l’utilisateur utilise le lien de confirmation de l’email il se retrouve sur la page de connexion avec un message :

Et maintenant il peut se connecter !

Sous le capot

La migration

Le package comprte une migration pour ajouter deux colonnes à la table users :

La colonne confirmed nous indique que l’utilisateur est confirmé et l’autre colonne contient le code de confirmation ou NULL si la confirmation a eu lieu.

Les routes

Le package ajoute deux routes :

  • confirmation/{id}/{token} : pour la confirmation avec l’id de l’utilisateur et un code
  • confirmation/resend : pour le renvoi de l’email de confirmation

Les contrôleurs

J’ai pris le parti de faire les interventions minimales sur les contrôleurs en me contentant de substituer le trait de Laravel. Par exemple pour le contrôleur LoginController on doit juste mettre la référence du trait du package au lieu de celui d’origine :

use Bestmomo\LaravelEmailConfirmation\Traits\AuthenticatesUsers;

Et c’est tout !

Artisan

Le package ajoute deux commandes artisan :

  • php artisan confirmation:auth : pour surcharger les vues login et register d’origine et leur ajouter les alertes.
  • php artisan confirmation:notification : si on veut modifier la notification alors cette commande en fait une copie dans l’application et c’est cette copie qui sera utilisée par le package.

Les traductions

Les fichiers de langue sont dans le package, par défaut en anglais et en français. Si on veut effectuer des changements alors il est prévu la publication de ces fichiers :

php artisan vendor:publish --tag=confirmation:translations

Conclusion

Je pense avoir réalisé un outil pratique et complet, du moins pour mes besoins personnels ! Je suis à l’écoute pour toute remarque concernant ce projet.

Print Friendly, PDF & Email

6 commentaires

Laisser un commentaire