Karena akan mengimplementasikan multiple auth, maka kita perlu membuat konfigurasi Guard untuk customer terlebih dahulu.
Langkah 1 - Membuat Guard dan Provider Customer
Silahkan teman-teman buka file config/auth.php, kemudian cari kode berikut ini.
ini
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
],
Kemudian silahkan ubah menjadi seperti berikut ini.
bash
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
//customer
'customer' => [
'driver' => 'session',
'provider' => 'customers'
]
],
Di atas, kita membuat guard baru dengan nama customer, dimana driver yang digunakan adalah session dan provider kita arahkan ke customers.
Setelah guard berhasil dibuat, maka kita buat juga providers-nya. Masih di dalam file yang sama, silahkan teman-teman scroll kebawah sedikit, maka akan terdapat konfigurasi providers, dimana saat ini hanya terdapat users saja, yang kurang lebih seperti berikut ini.
ruby
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => env('AUTH_MODEL', App\Models\User::class),
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
Silahkan ubah kode di atas menjadi seperti berikut ini.
kotlin
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => env('AUTH_MODEL', App\Models\User::class),
],
'customers' => [
'driver' => 'eloquent',
'model' => \App\Models\Customer::class,
],
],
Di atas, kita menambahkan provider baru dengan nama customers, dimana driver yang digunakan adalah eloquent dan model yang akan dipakai adalah app/Models/Customer.php.
Langkah 2 - Konfigurasi Model Customer
Agar customer dapat melakukan proses otentikasi, maka kita perlu melakukan konfigurasi di dalam Model-nya, sehingga nanti customer dapat melakukan login di dalam project menggunakan Guard di atas.
Silahkan buka file app/Models/Customer.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.
php
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Customer extends Authenticatable
{
/**
* fillable
*
* @var array
*/
protected $fillable = [
'image', 'name', 'email', 'password'
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
];
}
Di atas, pertama kita import Auth dan kita berikan aliases name Authenticatable.
rust
use Illuminate\Foundation\Auth\User as Authenticatable;
Setelah itu, kita gunakan Authenticatable di dalam class Customer.
java
class Customer extends Authenticatable
{
//...
Dan di dalam class Customer kita menambahkan properti $hidden, yang mana berisi field password. Properti ini digunakan agar field yang di definisikan di dalamnya tidak akan di ekspose did alams ebuah response.
php
protected $hidden = [
'password',
];