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.
Top comments (0)