Introduction
La vérification de l’e-mail (Email Verification) est un mécanisme qui permet de confirmer qu’un utilisateur est bien propriétaire de l’adresse e-mail qu’il a fournie lors de son inscription. Laravel fournit nativement l’envoi de l’e-mail de confirmation et son traitement, ce qui vous permet de construire un flux d’authentification sécurisé avec un minimum de code.Si vous utilisez un kit de démarrage, les écrans d’authentification et le flux de vérification de l’e-mail sont déjà intégrés. Si vous implémentez manuellement, définissez vous-même les modèles, routes et vues en suivant les étapes de cette page.
Préparation du modèle et de la base de données
Implémenter MustVerifyEmail
Vérifiez queApp\Models\User implémente Illuminate\Contracts\Auth\MustVerifyEmail.
Registered après une inscription réussie.
Vérifier la colonne email_verified_at
La tableusers doit contenir une colonne email_verified_at. Elle est généralement incluse dans la migration par défaut 0001_01_01_000000_create_users_table.php.
Routing (les trois routes)
Pour la vérification de l’e-mail, vous devez définir trois routes :verification.notice, verification.verify et verification.send.
Définir la route de notification (verification.notice)
Retourne un écran indiquant « Vérifiez vos e-mails » aux utilisateurs non vérifiés.
Définir la route de gestion (verification.verify)
Lorsque l’utilisateur clique sur le lien reçu par e-mail, vérifie l’URL signée et termine l’authentification.
Protection des routes
Pour n’autoriser que les utilisateurs authentifiés et vérifiés, utilisez le middlewareverified. On le combine généralement avec auth.
verification.notice.
Personnalisation
Pour personnaliser le contenu de l’e-mail de confirmation, configurezVerifyEmail::toMailUsing dans la méthode boot de AppServiceProvider.
Événements
Lorsque l’e-mail est vérifié, l’événementIlluminate\Auth\Events\Verified est déclenché. Les kits de démarrage le gèrent automatiquement, mais pour une implémentation manuelle, ajoutez le traitement de l’événement si nécessaire.