Cara membuat custom tabel untuk JWT Passport: Difference between revisions
No edit summary |
No edit summary Tags: Reverted Visual edit: Switched |
||
| Line 8: | Line 8: | ||
Tambahkan kode dibawah ini di dalam array providers | Tambahkan kode dibawah ini di dalam array providers | ||
< | <code class="syntaxbox">// …. 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, | ||
],</ | ],</code> | ||
== 2. Konfigurasi jwt passport == | == 2. Konfigurasi jwt passport == | ||
Revision as of 23:13, 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 adminprotected $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.