Cara membuat custom tabel untuk JWT Passport: Difference between revisions

From DocsMaulana
No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 8: Line 8:
Tambahkan kode dibawah ini di dalam array providers
Tambahkan kode dibawah ini di dalam array providers


<blockquote>// …. Kode lain    
<code class="language-html">// …. Kode lain    


// pada contoh ini menggunakan table  'admins'
// pada contoh ini menggunakan table  'admins'
Line 18: Line 18:
      'model' => App\Models\Admin::class,
      'model' => App\Models\Admin::class,


  ],</blockquote>
  ],</code>


== 2.      Konfigurasi jwt passport ==
== 2.      Konfigurasi jwt passport ==

Latest revision as of 23:35, 6 December 2023

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.