<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yannick-Noël Aka</title>
    <description>The latest articles on DEV Community by Yannick-Noël Aka (@codecaiine).</description>
    <link>https://dev.to/codecaiine</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F300181%2F470c7b3b-205e-48ee-958c-2aa808ce238b.jpg</url>
      <title>DEV Community: Yannick-Noël Aka</title>
      <link>https://dev.to/codecaiine</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codecaiine"/>
    <language>en</language>
    <item>
      <title>Utiliser les guards pour faire plusieurs authentifications avec Laravel 8 - Part I</title>
      <dc:creator>Yannick-Noël Aka</dc:creator>
      <pubDate>Fri, 02 Apr 2021 22:39:17 +0000</pubDate>
      <link>https://dev.to/codecaiine/utiliser-les-guards-pour-faire-plusieurs-authentifications-avec-laravel-8-3ol7</link>
      <guid>https://dev.to/codecaiine/utiliser-les-guards-pour-faire-plusieurs-authentifications-avec-laravel-8-3ol7</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prérequis&lt;/strong&gt;&lt;br&gt;
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:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PHP &amp;gt;= 7.3&lt;/li&gt;
&lt;li&gt;BCMath PHP Extension&lt;/li&gt;
&lt;li&gt;Ctype PHP Extension&lt;/li&gt;
&lt;li&gt;Fileinfo PHP extension&lt;/li&gt;
&lt;li&gt;JSON PHP Extension&lt;/li&gt;
&lt;li&gt;Mbstring PHP Extension&lt;/li&gt;
&lt;li&gt;OpenSSL PHP Extension&lt;/li&gt;
&lt;li&gt;PDO PHP Extension&lt;/li&gt;
&lt;li&gt;Tokenizer PHP Extension&lt;/li&gt;
&lt;li&gt;XML PHP Extension&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Une fois les éléments installés sur notre machine, nous allons passer à l'étape suivante , créer notre application Laravel 8 .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Créer notre application laravel&lt;/strong&gt;&lt;br&gt;
Nous avons le choix entre plusieurs methodes pour installer Laravel.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Utiliser le programme d'installation de laravel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vous pouvez installer Laravel via le programme d'installation en tant que dépendance globale de Composer:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;     composer global require laravel/installer
     laravel new multi_auth
     cd multi_auth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Installation avec composer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; 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.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   composer create-project --prefer-dist laravel/laravel multi_auth
   cd multi_auth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Vous pouvez lire la documentation de Laravel &lt;a href="https://laravel.com/docs/8.x/installation"&gt;ici &lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuration de la base de données&lt;/strong&gt;&lt;br&gt;
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 &lt;a href="https://www.apachefriends.org/fr/download.html"&gt;ici &lt;/a&gt; .&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   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)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Création des migrations pour nos différentes tables d' utilisateurs&lt;/strong&gt;&lt;br&gt;
 &lt;br&gt;
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 .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Création des migrations , des classes model Admins et Vendors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nous pouvons créer simplement les migrations en entrant les lignes de commande suivantes :&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; php artisan make:migration create_admins_table
 php artisan make:migration create_vendors_table
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Ou vous pouvez créer les migrations et modèles à la fois en exécutant les lignes de commande ci-dessous:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan make:model Admin -m
php artisan make:model Vendor -m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Après avoir créé nos différentes migrations et classes modèles , nous allons maintenant modifier le contenu . &lt;br&gt;
Vous trouverez les fichiers des migrations dans le dossier database/migrations et après modification devront ressembler à ceci:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Migration Admins&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  &amp;lt;?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-&amp;gt;id();
        $table-&amp;gt;string('pseudo')-&amp;gt;nullable();
        $table-&amp;gt;string('firstname')-&amp;gt;nullable();
        $table-&amp;gt;string('lastname')-&amp;gt;nullable();
        $table-&amp;gt;string('phone')-&amp;gt;unique();
        $table-&amp;gt;string('email')-&amp;gt;unique();
        $table-&amp;gt;string('password');
        $table-&amp;gt;boolean('super')-&amp;gt;default(false);
        $table-&amp;gt;rememberToken();
        $table-&amp;gt;timestamps();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('admins');
}
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Migration Vendors&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;?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-&amp;gt;id();
        $table-&amp;gt;string('pseudo')-&amp;gt;nullable();
        $table-&amp;gt;string('firstname')-&amp;gt;nullable();
        $table-&amp;gt;string('lastname')-&amp;gt;nullable();
        $table-&amp;gt;string('phone')-&amp;gt;unique();
        $table-&amp;gt;string('email')-&amp;gt;unique();
        $table-&amp;gt;string('password');
        $table-&amp;gt;boolean('super')-&amp;gt;default(false);
        $table-&amp;gt;rememberToken();
        $table-&amp;gt;timestamps();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('vendors');
}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;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 .&lt;br&gt;
 &lt;br&gt;
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. &lt;/p&gt;

&lt;p&gt;Sinon, pour créer nos modèles, nous allons exécuter les lignes de commande ci-dessous dans notre terminal.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan make:model Admin
php artisan make:model Vendor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;App/Models/Admin.php&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?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',
     ];
 }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;App/Models/Vendor.php&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;?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',
     ];
     }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;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 :&lt;br&gt;
php artisan migrate&lt;br&gt;
la migration étant faite, nous trouverons que les tables Admins , Vendors et Users ont été créés . &lt;br&gt;
Aujoutons les guards (gardiens)&lt;br&gt;
Nous allons ouvrir le fichier &lt;strong&gt;config/auth.php&lt;/strong&gt; et ajouter deux nouveaux guards admins et vendors . &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 'guards' =&amp;gt; [
     'web' =&amp;gt; [
         'driver' =&amp;gt; 'session',
         'provider' =&amp;gt; 'users',
     ],

     'api' =&amp;gt; [
         'driver' =&amp;gt; 'token',
         'provider' =&amp;gt; 'users',
         'hash' =&amp;gt; false,
     ],
     'user' =&amp;gt; [
          'driver' =&amp;gt; 'session',
          'provider' =&amp;gt; 'users',
     ],
     'admin' =&amp;gt; [
           'driver' =&amp;gt; 'session',
           'provider' =&amp;gt; 'admins',
     ],
     'vendor' =&amp;gt; [
             'driver' =&amp;gt; 'session',
             'provider' =&amp;gt; 'vendors',
     ],
  ],
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Nous venons d'ajouter deux nouveaux guards et avons défini leurs providers. Dans le même fichier &lt;strong&gt;config/auth.php&lt;/strong&gt; , nous allons aujouter nos nouveaux providers.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   'providers' =&amp;gt; [
         'users' =&amp;gt; [
               'driver' =&amp;gt; 'eloquent',
               'model' =&amp;gt; App\Models\User::class,
          ],

          'admins' =&amp;gt; [
                 'driver' =&amp;gt; 'eloquent',
                 'model' =&amp;gt; App\Models\Admin::class,
           ],

           'vendors' =&amp;gt; [
                   'driver' =&amp;gt; 'eloquent',
                   'model' =&amp;gt; App\Models\Vendor::class,
           ],
     ],
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Un provider indique à Laravel ce qu'il faut utiliser pour l'authentification ou la validation lorsque nous essayons d'utiliser le garde.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;La suite dans la seconde partie.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>french</category>
    </item>
  </channel>
</rss>
