Utiliser les guards pour faire plusieurs authentifications avec Laravel 8 - Part I
Yannick-Noël Aka
Posted on April 2, 2021
Introduction
Il existe plusieurs manières pour faire des authentifications multiples avec Laravel 8 . Mais aujourd'hui nous allons utiliser les guards pour faire plusieurs authentification.
Prérequis
Pour pouvoir installer Laravel 8 sur votre machine , Il faut remplir certaines conditions. Il faut que les éléments ci-dessous soient installés sur votre machine:
- PHP >= 7.3
- BCMath PHP Extension
- Ctype PHP Extension
- Fileinfo PHP extension
- JSON PHP Extension
- Mbstring PHP Extension
- OpenSSL PHP Extension
- PDO PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
Une fois les éléments installés sur notre machine, nous allons passer à l'étape suivante , créer notre application Laravel 8 .
Créer notre application laravel
Nous avons le choix entre plusieurs methodes pour installer Laravel.
- Utiliser le programme d'installation de laravel
Vous pouvez installer Laravel via le programme d'installation en tant que dépendance globale de Composer:
composer global require laravel/installer
laravel new multi_auth
cd multi_auth
- Installation avec composer
Cependant nous allons utiliser la methode d'installation avec Composer Create-Project . Pour cela il faut installer composer sur votre machine lien. Nous allons taper la ligne de commande ci-dessous dans votre terminal.
composer create-project --prefer-dist laravel/laravel multi_auth
cd multi_auth
Vous pouvez lire la documentation de Laravel ici .
Configuration de la base de données
Dans cette partie nous allons configurer notre base de données dans le fichier .env . Pour la base de données j'utilise XAMPP que vous pouvez télécharger ici .
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=multi_auth (nom de la base données)
DB_USERNAME=*****(nom utilisateur)
DB_PASSWORD=*****(mot de passe)
Création des migrations pour nos différentes tables d' utilisateurs
Après avoir configuré notre Base de données , nous allons créer les migrations pour les tables admins et vendors . Par defaut laravel a déjà créé la migration pour la table users .
Création des migrations , des classes model Admins et Vendors
Nous pouvons créer simplement les migrations en entrant les lignes de commande suivantes :
php artisan make:migration create_admins_table
php artisan make:migration create_vendors_table
Ou vous pouvez créer les migrations et modèles à la fois en exécutant les lignes de commande ci-dessous:
php artisan make:model Admin -m
php artisan make:model Vendor -m
Après avoir créé nos différentes migrations et classes modèles , nous allons maintenant modifier le contenu .
Vous trouverez les fichiers des migrations dans le dossier database/migrations et après modification devront ressembler à ceci:
Migration Admins
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateAdminsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admins', function (Blueprint $table) {
$table->id();
$table->string('pseudo')->nullable();
$table->string('firstname')->nullable();
$table->string('lastname')->nullable();
$table->string('phone')->unique();
$table->string('email')->unique();
$table->string('password');
$table->boolean('super')->default(false);
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('admins');
}
}
Migration Vendors
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateVendorsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('Vendors', function (Blueprint $table) {
$table->id();
$table->string('pseudo')->nullable();
$table->string('firstname')->nullable();
$table->string('lastname')->nullable();
$table->string('phone')->unique();
$table->string('email')->unique();
$table->string('password');
$table->boolean('super')->default(false);
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('vendors');
}
}
Nous allons definir un modèle pour Admins et Vendors pour pouvoir utiliser les différentes table du même nom pour l'authentification. Pour créer ces différents modèles .
Plus haut, nous avons précedemment exécuté la commande qui créait à la fois le modèles et les tables(migrations) pour admins et vendors . Vous devrez avoir deux fichiers admin et vendor dans le dossier suivant App/Models.
Sinon, pour créer nos modèles, nous allons exécuter les lignes de commande ci-dessous dans notre terminal.
php artisan make:model Admin
php artisan make:model Vendor
App/Models/Admin.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Admin extends Authenticatable
{
use Notifiable;
protected $guard = 'admin';
protected $fillable = [
'firstname', 'lastname', 'pseudo', 'phone', 'email',
'password',
];
protected $hidden = [
'password', 'remember_token',
];
}
App/Models/Vendor.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Vendor extends Authenticatable
{
use Notifiable;
protected $guard = 'vendor';
protected $fillable = [
'firstname', 'lastname', 'pseudo', 'phone', 'email',
'password',
];
protected $hidden = [
'password', 'remember_token',
];
}
Nous maintenans passer à une autre étape, qui est celui de migrer (migrate) notre base de données . Pour cela , nous allons exécuter la commande suivante :
php artisan migrate
la migration étant faite, nous trouverons que les tables Admins , Vendors et Users ont été créés .
Aujoutons les guards (gardiens)
Nous allons ouvrir le fichier config/auth.php et ajouter deux nouveaux guards admins et vendors .
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'user' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'vendor' => [
'driver' => 'session',
'provider' => 'vendors',
],
],
Nous venons d'ajouter deux nouveaux guards et avons défini leurs providers. Dans le même fichier config/auth.php , nous allons aujouter nos nouveaux providers.
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class,
],
'vendors' => [
'driver' => 'eloquent',
'model' => App\Models\Vendor::class,
],
],
Un provider indique à Laravel ce qu'il faut utiliser pour l'authentification ou la validation lorsque nous essayons d'utiliser le garde.
La suite dans la seconde partie.
Posted on April 2, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
April 2, 2021
November 11, 2020