My Course — Membangun Website Food Store Dengan Laravel Filament, Livewire dan Payment Gateway

Konfigurasi Guard Customer


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', ];