Aller au contenu principal

Module 14 – Authentification & Autorisation

Niveau 3 – Laravel fondamental


Objectifs

Authentification avec Breeze ou Fortify (login, inscription, mot de passe oublié), guards et providers, puis contrôle d’accès avec Policies et Gates. On applique sur un projet avec rôles (admin / user).


Théorie (résumé)

Authentification

  • Breeze : scaffolding minimal (routes, contrôleurs, vues Blade) pour login, register, reset password. Idéal pour apprendre.
  • Fortify : logique d’auth sans UI (à coupler avec vos vues ou Jetstream).
  • Jetstream : auth + équipes, 2FA, avec Livewire ou Inertia.

Installation Breeze (ex.) : composer require laravel/breeze --dev puis php artisan breeze:install.

Les routes d’auth (login, register, logout) et le middleware auth protègent les pages réservées aux utilisateurs connectés.

Guards et Providers

Dans config/auth.php : les guards définissent comment on « authentifie » (session web, token API). Les providers définissent d’où viennent les utilisateurs (modèle User, table users). En général : guard web + provider users (Eloquent).

Autorisation : Policies et Gates

  • Policy : une classe par modèle (ex. ArticlePolicy) avec des méthodes view, create, update, delete. On vérifie : $this->authorize('update', $article); ou dans Blade @can('update', $article).
  • Gate : règle globale (ex. « est admin »). Définie dans AppServiceProvider ou AuthServiceProvider : Gate::define('admin', fn (User $user) => $user->isAdmin());. Vérification : Gate::allows('admin') ou @can('admin').

Créer une policy : php artisan make:policy ArticlePolicy --model=Article. Enregistrer dans AuthServiceProvider si nécessaire (Laravel le fait souvent automatiquement pour les policies de modèle).

Projet Auth admin / user

  • Modèle User avec un champ role (ex. user, admin) ou table roles + relation.
  • Middleware ou Gate admin qui vérifie le rôle.
  • Policies pour les ressources (ex. seul l’admin peut supprimer un article, ou l’auteur peut le modifier).
  • Pages : tableau de bord user, zone admin (liste des utilisateurs, modération).

Quiz – Module 14

Q1. À quoi sert le middleware auth ?
Q2. Quelle est la différence entre une Policy et une Gate ?
Q3. Comment vérifier dans un contrôleur qu’un utilisateur peut modifier un article ?
Q4. Où sont configurés les guards et providers ?
Q5. Quel package Laravel fournit un scaffolding d’authentification minimal (login, register) ?

Réponses

R1. À restreindre l’accès aux utilisateurs connectés ; sinon redirection vers la page de login.

R2. Une Policy est liée à un modèle (ex. Article) et définit qui peut faire quoi sur ce modèle. Une Gate est une règle globale (ex. « est admin ») non liée à un modèle.

R3. Avec $this->authorize('update', $article); (Laravel appelle la méthode update de la policy du modèle Article).

R4. Dans config/auth.php (guards et providers).

R5. Laravel Breeze (scaffolding minimal). Fortify (sans UI), Jetstream (avec équipes, 2FA).


Projet : Auth complète (admin / user)

  • Inscription, connexion, déconnexion, réinitialisation mot de passe.
  • Rôle user / admin (champ ou table).
  • Au moins une ressource (ex. articles) avec policy (create, update, delete selon rôle ou propriété).
  • Zone admin protégée par un middleware ou une Gate « admin ».

Suite

Niveau 4 – Laravel avancé : Module 15 – Validation avancée & Form Requests.