Cara membuat custom tabel untuk JWT Passport

From DocsMaulana
Revision as of 05:53, 4 December 2023 by Adminmaul (talk | contribs) (Protected "Cara membuat custom tabel untuk JWT Passport" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))

Secara default framework Laravel akan mengambil data pengguna dari tabel yang diatur sebagai model pengguna bawaan (default) yang biasanya adalah users.

Untuk mengambil data dari tabel lain dari pada tabel default users, Anda perlu menyesuaikan pengaturan dalam konfigurasi JWT untuk menggunakannya. Berikut langkah-langkahnya:


1.      Konfigurasi model provider

Untuk membuat Laravel mengambil data dari tabel selain user, yang perlu di lakukan adalah dengan melakukan konfigurasi model provider di dalam file config/auth.php.

Tambahkan kode dibawah ini di dalam array providers

// …. Kode lain  

// pada contoh ini menggunakan table  'admins'

  'admins' => [

      'driver' => 'eloquent',

      'model' => App\Models\Admin::class,

  ],


2.      Konfigurasi jwt passport

Setelah menambahkan provider seperti diatas. Langkah selanjutnya adalah mengkonfigurasi agar provider admis bisa di gunakan. Tambahkan kode ini di dalam array guard

'guards' => [

// ….. kode lainnya


      'admin' => [

          'driver' => 'passport',

          'provider' => 'admins',

      ],

  ],

Perhatikan bahwa provider telah mengarah pada provider yang telah di buat sebelumnya.

3.      Konfigruasi model Admin

Agar dapat berjalan perlu di lakukan konfigurasi pada model admin, konfigurasinya seperti berikut:

namespace App\Models;


use Illuminate\Contracts\Auth\Authenticatable;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Auth\Authenticatable as AuthenticableTrait;


class Admin extends Model implements Authenticatable

{

  use AuthenticableTrait;


  // Sesuaikan sesuai dengan nama tabel dan kolom yang digunakan untuk admin

  protected $table = 'admins';

  protected $primaryKey = 'id';

  // ... definisikan atribut lainnya


  public function getAuthIdentifierName()

   {

      return 'id'; // Ganti dengan nama kolom yang merupakan identifier untuk admin

   }


  public function getAuthIdentifier()

   {

      return $this->{$this->getAuthIdentifierName()};

   }


  // Metode lain yang diperlukan, seperti getAuthPassword, dll.

  // ...

}


Sesuaikan dengan model admin yang anda miliki.

4.      Pengetesan

Pastikan semua telah berjalan sesuai dengan semestinya. Pada middleware di isi dengan auth:admin sesuai dengan konfigurasi yang telah di buat tadi.

Route::middleware('auth:admin')->get('/dashboard, function () {

  // ...

});


Dengan langkah-langkah ini, Anda akan menggunakan model Admin untuk otentikasi dengan JWT daripada model User.