1. Instalasi Lumen Passport
Karena Laravel Passport tidak secara resmi mendukung Lumen, kita dapat menggunakan paket pihak ketiga seperti dusterio/lumen-passport
yang memungkinkan integrasi Passport dengan Lumen.
Untuk menginstalnya, jalankan perintah berikut:
bootstrap/app.php
, tambahkan baris berikut:$app->withFacades();
$app->withEloquent();
$app->routeMiddleware([
‘auth’ => App\Http\Middleware\Authenticate::class,
]);$app->register(Laravel\Passport\PassportServiceProvider::class);
$app->register(Dusterio\LumenPassport\PassportServiceProvider::class);
3. Migrasi dan Instalasi Passport
Jalankan perintah berikut untuk membuat tabel yang diperlukan dan menginstal Passport:
php artisan migrate
php artisan passport:install
4. Konfigurasi Autentikasi
- Buat File Konfigurasi: Buat direktori
config
di root proyek (jika belum ada) dan buat fileauth.php
dengan isi:
<?php
return [
‘defaults’ => [
‘guard’ => ‘api’,
‘passwords’ => ‘users’,
],‘guards’ => [
‘api’ => [
‘driver’ => ‘passport’,
‘provider’ => ‘users’,
],
],‘providers’ => [
‘users’ => [
‘driver’ => ‘eloquent’,
‘model’ => \App\Models\User::class,
],
],
];
- Muat Konfigurasi: Di file
bootstrap/app.php
, tambahkan:
$app->configure(‘auth’);
5. Atur Rute OAuth
Di file bootstrap/app.php
, daftarkan rute Passport:
\Dusterio\LumenPassport\LumenPassport::routes($app, [‘prefix’ => ‘v1/oauth’]);
6. Modifikasi Model User
Di file App\Models\User.php
, pastikan model menggunakan trait HasApiTokens
:
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;// …
}
Juga, tambahkan field password
ke dalam properti $fillable
:
protected $fillable = [
‘name’, ’email’, ‘password’,
];
7. Pengujian
Untuk memastikan semuanya berfungsi, Anda dapat membuat kontroler UsersController
dengan metode untuk registrasi dan login pengguna.
- Rute Registrasi: Di file
routes/web.php
, tambahkan:
$router->post(‘/register’, ‘UsersController@register’);
- Migrasi Tabel Users: Buat migrasi untuk tabel
users
dengan skema:
Schema::create(‘users’, function (Blueprint $table) {
$table->bigIncrements(‘id’);
$table->string(‘name’);
$table->string(’email’)->unique();
$table->string(‘password’);
$table->timestamps();
});
Setelah itu, jalankan migrasi:
php artisan migrate
Untuk autentikasi pengguna, Anda dapat menggunakan endpoint /v1/oauth/token
dengan mengirim permintaan POST yang berisi client_id
, client_secret
, username
, dan password
.
Dengan mengikuti langkah-langkah di atas, Anda telah berhasil mengintegrasikan Laravel Passport ke dalam aplikasi Lumen Anda, memungkinkan implementasi OAuth2 untuk autentikasi API.
untuk pembahasan lebih lanjut dapat merujuk ke :
https://medium.com/the-andela-way/setting-up-oauth-in-lumen-using-laravel-passport-2de9d007e0b0