Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Réinitialisation sécurisée de mot de passe avec Laravel
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Réinitialisation sécurisée de mot de passe avec Laravel

L'Équipe Alphorm Par L'Équipe Alphorm 9 janvier 2025
Partager
Partager

La perte de mot de passe est un problème courant pour les utilisateurs d’applications web.

Cela peut entraîner une frustration importante et compromettre la sécurité si le processus de récupération n’est pas sécurisé.

Cet article explore la mise en œuvre d’une réinitialisation de mot de passe sécurisée dans Laravel, en utilisant des jetons uniques et des notifications par email.

Table de matière
Modifier store pour réinitialisation LaravelCréer PasswordResetNotification LaravelConfigurer Mailtrap pour email sécuriséTester emails sécurisés avec MailtrapFAQConclusion

Formation Laravel : Le Guide Complet du Débutant

Initiez-vous à Laravel et réalisez votre première application en toute confiance.

Découvrir cette formation

Dans ce chapitre, nous allons implémenter une fonctionnalité qui permet à un utilisateur de réinitialiser son mot de passe en lui envoyant un lien sécurisé par email. Ce lien contiendra un jeton de réinitialisation unique que l’utilisateur pourra utiliser pour mettre à jour son mot de passe.

Modifier store pour réinitialisation Laravel

La première étape consiste à modifier la méthode store dans le contrôleur de réinitialisation du mot de passe (par exemple ForgotPasswordController). Cette méthode sera responsable de valider l’email de l’utilisateur, de générer un jeton unique, et d’envoyer une notification par email avec un lien de réinitialisation.

Voici le code modifié pour la méthode store :

				
					
 public function store() // vérification des données et envoi de lien par mail
{
request()->validate([
'email' => 'required|email|exists:users',
]);
$token = Str::uuid();
DB::table('password_reset_tokens')->insert([
'email' => request('email'),
'token' => $token,
'created_at' => now(),
]);
// Envoi de notification avec un lien sécurisé
$user = User::whereEmail(request('email'))->firstOrFail();
if (!$user) {
return back()->withError('Utilisateur non trouvé.');
}

$user->notify(new PasswordResetNotification($token));
$success = 'Vérifiez votre boîte mail et suivez les instructions.';
return back()->withSuccess($success);
}

				
			

Explication du code :

  • Validation :L’email est validé pour s’assurer qu’il existe dans la base de données des utilisateurs.
  • Génération du token :Un token unique est généré avec la fonction Str::uuid().
  • Enregistrement dans la base de données :Le token est inséré dans la table password_reset_tokens avec l’email de l’utilisateur et la date de création.
  • Envoi de la notification :La notification est envoyée à l’utilisateur avec le token généré, qui contient le lien de réinitialisation.
  • Retour avec un message de succès :L’utilisateur est informé qu’il doit vérifier sa boîte mail.

Créer PasswordResetNotification Laravel

La notification PasswordResetNotification va être responsable de la création du contenu du mail, incluant un lien sécurisé permettant à l’utilisateur de réinitialiser son mot de passe.

Pour créer cette notification, vous pouvez utiliser la commande Artisan suivante

				
					
 php artisan make:notification PasswordResetNotification

				
			

Voici l’implémentation complète de la notification

				
					
 <?php

namespace App\Notifications;

 use Illuminate\Bus\Queueable;
 use Illuminate\Contracts\Queue\ShouldQueue;
 use Illuminate\Notifications\Messages\MailMessage;
 use Illuminate\Notifications\Notification;

 class PasswordResetNotification extends Notification
 {
     use Queueable;
     /**
     * Create a new notification instance.
     */
     protected string $token;
     public function __construct(string $token)
     {
         $this->token = $token;
     }
     /**
     * Get the notification's delivery channels.
     *
     * @return array<int, string>
     */
     public function via(object $notifiable): array
     {
         return ['mail'];
     }
     /**
     * Get the mail representation of the notification.
     */
     public function toMail(object $notifiable): MailMessage
     {
         if (!$this->token) {
             \Log::error('Token manquant dans PasswordResetNotification pour ' . $notifiable->email);
         } else {
             \Log::info('Token utilisé dans PasswordResetNotification : ' . $this->token);
         }
         return (new MailMessage())
         ->greeting('Bonjour ' . $notifiable->name)
         ->subject('Oubli de mot de passe')
         ->line('Veuillez cliquer sur le lien ci-dessous pour réinitialiser votre mot de passe')
         ->action('Réinitialiser', url('/reset/' . $this->token))
         ->salutation('À bientôt, ' . config('app.name'));
     }
     /**
     * Get the array representation of the notification.
     *
     * @return array<string, mixed>
     */
     public function toArray(object $notifiable): array
     {
         return [
         //
         ];
     }
 }

				
			

Explication de la notification :

  • Canaux de livraison :Nous utilisons le canal mail pour envoyer un email à l’utilisateur.
  • Contenu du mail :Le mail contient un message de bienvenue, un sujet, une ligne expliquant l’action à réaliser et un bouton d’action avec un lien pour réinitialiser le mot de passe.
  • Logs :Des logs sont ajoutés pour vérifier le bon passage du token dans le processus.

Configurer Mailtrap pour email sécurisé

Mailtrap est un outil de test d’email qui vous permet de simuler l’envoi d’emails sans envoyer de véritables messages. Dans cette étape, nous allons configurer Laravel pour utiliser Mailtrap comme serveur SMTP pour tester l’envoi d’emails.

  • Créer un compte Mailtrap

Mailtrap permet de tester l’envoi d’emails en toute sécurité sans risquer d’envoyer de vrais emails à des utilisateurs. Inscrivez-vous sur Mailtrap et créez une inbox pour recevoir les messages de test.

  • Configuration de .env

Une fois votre compte Mailtrap configuré, récupérez les informations de connexion SMTP et mettez à jour votre fichier .env pour que Laravel puisse envoyer les emails via Mailtrap.

Pour tester l’envoi de mails sans envoyer de véritables emails en production, nous utilisons un service comme Mailtrap . Mailtrap capture les emails envoyés dans un environnement de test.

Voici la configuration que vous devez ajouter à votre fichier .env pour utiliser Mailtrap :

				
					
 MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_mailtrap_username
MAIL_PASSWORD=your_mailtrap_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@yourdomain.com
MAIL_FROM_NAME="${APP_NAME}"

				
			
  • MAIL_HOST :L’adresse du serveur SMTP Mailtrap.
  • MAIL_PORT :Le port utilisé par Mailtrap.
  • MAIL_USERNAME et MAIL_PASSWORD :Vos informations d’identification Mailtrap.
  • MAIL_FROM_ADDRESS :L’adresse de l’expéditeur.
  • MAIL_FROM_NAME :Le nom de l’expéditeur qui apparaîtra dans l’email

Tester emails sécurisés avec Mailtrap

Une fois que vous avez configuré tout cela, vous pouvez tester l’envoi d’email en suivant ces étapes :

  • Accédez à la page de réinitialisation de mot de passe :Entrez un email valide dans le formulaire.
Formulaire de réinitialisation de mot de passe Laravel
  • Vérifiez votre boîte Mailtrap :Connectez-vous à Mailtrap et vérifiez que le message est bien envoyé.

Voici l’affichage de message sur Mailtrap

Interface de réinitialisation de mot de passe Laravel.
  • Cliquez sur le lien de réinitialisation :Testez que le lien redirige correctement l’utilisateur vers la page de réinitialisation.

Vous avez maintenant une fonctionnalité complète pour permettre aux utilisateurs de réinitialiser leur mot de passe en toute sécurité. Cette fonctionnalité inclut l’envoi d’un lien de réinitialisation par email, la génération d’un token unique, et l’utilisation de Mailtrap pour tester l’envoi des mails en toute sécurité.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Comment réinitialiser un mot de passe dans Laravel ?
Pour réinitialiser un mot de passe dans Laravel, vous devez d’abord modifier la méthode store de votre contrôleur ForgotPasswordController. Cette méthode valide l’email de l’utilisateur, génère un jeton unique et envoie une notification par email avec un lien de réinitialisation. Le jeton est stocké dans la table password_reset_tokens, permettant à l’utilisateur de mettre à jour son mot de passe de manière sécurisée.
Comment envoyer une notification de réinitialisation de mot de passe ?
Pour envoyer une notification de réinitialisation de mot de passe dans Laravel, vous devez créer une classe de notification, PasswordResetNotification, qui utilise le canal mail. Cette classe génère un email contenant un message de bienvenue, un sujet, et un lien d’action pour réinitialiser le mot de passe. Vous pouvez générer cette notification avec la commande Artisan make:notification.
Qu'est-ce que Mailtrap et comment est-il utilisé ?
Mailtrap est un outil de test d’email qui permet de simuler l’envoi d’emails dans un environnement de développement sans envoyer de vrais messages. Dans Laravel, vous configurez Mailtrap en tant que serveur SMTP dans le fichier .env. Cela vous permet de capturer et de tester les emails envoyés, garantissant que vos notifications de réinitialisation de mot de passe fonctionnent correctement avant de passer en production.
Comment configurer Mailtrap dans Laravel ?
Pour configurer Mailtrap dans Laravel, inscrivez-vous sur Mailtrap.io et créez une inbox. Récupérez vos informations de connexion SMTP et mettez à jour le fichier .env de Laravel avec ces détails. Assurez-vous que les variables MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_FROM_ADDRESS et MAIL_FROM_NAME sont correctement définies pour permettre l’envoi d’emails via Mailtrap.
Comment tester l'envoi d'emails de réinitialisation avec Mailtrap ?
Une fois Mailtrap configuré, testez l’envoi d’emails de réinitialisation en accédant à la page de réinitialisation de mot de passe dans votre application Laravel. Entrez un email valide et vérifiez dans Mailtrap que le message a bien été envoyé. Cliquez sur le lien de réinitialisation dans l’email pour vous assurer qu’il redirige correctement vers la page de réinitialisation de mot de passe.

Conclusion

Vous avez maintenant une compréhension claire de la mise en œuvre de la réinitialisation de mot de passe dans Laravel. Comment allez-vous appliquer ces connaissances pour renforcer la sécurité de votre application ?

ÉTIQUETÉ : Laravel
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Réinitialisation sécurisée de mot de passe avec Laravel

© Alphorm - Tous droits réservés