Commentaires
Rassure-toi, cette partie est bien plus courte que les précédentes... Et pour cause, Laravel 9 vient avec un système tout prêt pour l'authentification. Quelques commandes et nous aurons une application rodée pour l'authentification ;)

Il faut savoir que depuis Laravel 8, le framework propose 3 "starter kits" pour l'authentification :

Arthur, l'apprenti développeurMais je choisis lequel moi ?
Voyons les différences entre chaque :

  • Laravel Jetstream est un pack très complet intégrant déjà un design travaillé basé sur des technologies puissantes et très récentes (Inertia + VueJS, Livewire + Blade). C'est un peu trop pour notre application et pour notre niveau !

  • Laravel Fortify quant à lui est plus minimaliste, il se contente de nous donner les derrières de l'authentification mais aucune vue, route etc... C'est vraiment le moteur d'une voiture sans châssis, volant, roues...

  • Laravel Breeze est le kit que nous allons utiliser. Conseillé pour les débutants, très simple, il nous donne tout ce qu'il faut pour gérer automatiquement :

    • L'inscription

    • La connexion

    • La déconnexion

    • L'oubli de mot de passe

L'installation de Laravel Breeze


Laravel Breeze donne des fonctionnalités backend pour gérer l'authentification et aussi des vues. Ainsi, nous aurons besoin d'utiliser nos 2 gestionnaires de paquets backend et frontend favoris : composer et npm.
Premièrement, installons la partie back de Laravel Breeze. Place-toi à la racine du projet dans ton terminal et tape :

{"language":"application/x-httpd-php","content":"composer require laravel/breeze --dev","filename":"console"}

Puis :

{"language":"shell","content":"php artisan breeze:install","filename":"console"}


Ensuite, utilisons npm pour installer les dépendances et compiler nos assets :

{"language":"application/x-httpd-php","content":"npm install && npm run dev","filename":"console"}

Et c'est tout.
Arthur, l'apprenti développeurC'est tout ? Tu veux dire que j'ai un système d'authentification qui fonctionne parfaitement ?
Tout à fait. Va sur ton navigateur et regarde les pages /register, /login de ton application par exemple. Tu peux les essayer et te créer un compte, tout fonctionne. Enfin presque tout... Seule la fonctionnalité de modification de mot de passe (mot de passe oublié) ne marche pas correctement. En effet, il faut au préalable renseigner les informations liées au serveur d'email qui enverra les emails de reset de mot de passe. Où cela peut-il se faire selon toi ?

Arthur, l'apprenti développeurDans le dossier de config ?
Presque. En réalité, le fichier "mail.php" du dossier de config fait référence à des variables directement inscrites dans le .env. On a donc juste à modifier le .env.
La partie concernée est la suivante :

{"language":"application/x-httpd-php","content":"MAIL_MAILER=smtp\nMAIL_HOST=smtp.mailtrap.io\nMAIL_PORT=2525\nMAIL_USERNAME=null\nMAIL_PASSWORD=null\nMAIL_ENCRYPTION=null\nMAIL_FROM_ADDRESS=null\nMAIL_FROM_NAME=\"${APP_NAME}\"","filename":".env"}

Tu dois remplacer toutes ces informations par les identifiants de ton serveur de mail.
MAIL_FROM_ADDRESS correspondra à l'adresse email qui enverra les emails de ton application si aucune autre n'est spécifiée
MAIL_FROM_NAME correspondra au nom qui s'affichera sur les emails envoyés
Ces deux champs sont peut être un peu moins explicites que les précédents donc je me permets de te les expliquer.

Également, si tu essaies de te connecter tu remarqueras que tu es redirigé automatiquement sur un tableau de bord. Ce n'est pas le comportement souhaité dans le cadre de notre application. Effectivement, une fois connecté, on veut juste rediriger nos membres sur l'accueil : seuls les administrateurs pourront accéder au panneau d'administration.
Pour modifier ce comportement, rendez-vous dans app -> providers -> RouteServiceProvider.php et changeons la valeur de la constante home comme suit :

{"language":"application/x-httpd-php","content":"<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Cache\\RateLimiting\\Limit;\nuse Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider as ServiceProvider;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\RateLimiter;\nuse Illuminate\\Support\\Facades\\Route;\n\nclass RouteServiceProvider extends ServiceProvider\n{\n /**\n * The path to the \"home\" route for your application.\n *\n * This is used by Laravel authentication to redirect users after login.\n *\n * @var string\n */\n public const HOME = '/';\n\t\n\t// Reste du code\n}","filename":"RouteServiceProvider.php"}

Arthur, l'apprenti développeurSuper ! C'est vraiment simple.
En effet. Cependant, attention. Tout fonctionne bien car nous avons une application classique, c'est à dire qu'on veut authentifier un utilisateur avec un couple email/mot de passe et que notre table users en base de données suit la même forme que celle proposée de base par Laravel. Si on avait changé ça (le nom du champ email par exemple), on aurait du faire quelques modifications à la main. D'ailleurs, tu auras peut être remarqué que plusieurs fichiers sont apparus après avoir réaliser le composer require.

  • Le dossier "Auth" dans les contrôleurs : c'est notamment dans ce dossier qu'on devrait faire des modifications si besoin

  • Le fichier auth.php dans les routes

  • Le dossier "auth" dans les views dans les resources : pour modifier le design des pages

  • Toutes les dépendances de vendor et node_modules



Nous allons maintenant commencer à rentrer dans les parties les plus "intéressantes" : la manipulation des contrôleurs, des vues, des routes pour réaliser le coeur de notre application !

J'ai terminé cette partie
Demander de l'assistance