Il se peut que l’on ai besoin d’avoir plusieurs types d’utilisateurs qui se connectent à notre application. Bien souvent, on souhaite séparer les ces types d’utilisateurs dans des Model différents.
Avec son système de guard, Laravel peut identifier et connecter des types d’utilisateurs différents.
1. Créer plusieurs model d’utilisateurs
php artisan make:model User
php artisan make:model Admin
2. Configurer nos Guards
Dans notre fichier de configuration: config/auth.php
, on ajoute notre Guard pour nos administrateurs.
TIP
C’est ici que l’on peut modifier le driver et/ou le provider (Model) de nos guards.
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
3. Ajouter un nouveau provider
Dans notre fichier de configuration: config/auth.php
, on ajoute notre provider pour nos administrateurs.
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class,
],
],
Et voila ! 🎉
On peut maintenant authentifier des utilisateurs automatiquement dans leur type respectif.
if (auth()->guard('web')->attempt(['email' => $email, 'password' => $password])) {
}
if (auth()->guard('admin')->attempt(['email' => $email, 'password' => $password])) {
}
On peut aussi protéger des routes avec le middleware intégré à Laravel.
Route::middleware(['auth:web'])->group(function () {
});
Route::middleware(['auth:admin'])->group(function () {
});