Authentification — inscription et connexion
Laravel Breeze, middleware auth et protection des routes
Concepts Théoriques
SunuLearn a besoin que les utilisateurs se connectent pour s'inscrire aux formations et suivre leur progression. Laravel fournit tout le système d'authentification — il suffit de l'activer.
Laravel Breeze
Breeze est le starter kit d'authentification léger de Laravel. Il installe : inscription, connexion, déconnexion, mot de passe oublié, vérification email, et page profil. Le tout avec des vues Blade + Tailwind CSS que vous pouvez personnaliser.
En Laravel 12, Breeze n'est plus dans les options du starter kit par défaut, mais il fonctionne parfaitement :
composer require laravel/breeze --dev
php artisan breeze:install blade
npm install && npm run build
php artisan migrateChoisissez Blade with Alpine quand Breeze vous demande le stack. Alpine.js est un micro-framework JS déjà inclus — vous ne le toucherez pas directement.
Après l'installation, visitez http://localhost:8000 — les liens "Login" et "Register" apparaissent.
Ce que Breeze a installé
- Routes dans routes/auth.php : login, register, logout, password.reset, password.confirm, verification.verify
- Controllers dans app/Http/Controllers/Auth/ : LoginController, RegisterController, etc.
- Vues dans resources/views/auth/ : login.blade.php, register.blade.php, etc.
- Middleware auth : protège les routes qui nécessitent une connexion
Protéger des routes
// routes/web.php
Route::middleware('auth')->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Route::get('/mes-formations', [EnrollmentController::class, 'index'])->name('enrollments.index');
});Les visiteurs non connectés sont redirigés vers /login.
@auth et @guest dans Blade
@auth
<p>Connecté en tant que {{ auth()->user()->name }}</p>
<a href="{{ route('dashboard') }}">Mon espace</a>
@endauth
@guest
<a href="{{ route('login') }}">Connexion</a>
<a href="{{ route('register') }}">Inscription</a>
@endguestL'utilisateur connecté
// Dans un contrôleur
$user = auth()->user(); // L'utilisateur connecté
$user->name; // Son nom
$user->email; // Son email
// Vérifier si connecté
if (auth()->check()) { ... }