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)