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:

composer require dusterio/lumen-passport
2. Konfigurasi Aplikasi
Aktifkan Facades dan Eloquent: Di file bootstrap/app.php, tambahkan baris berikut:
$app->withFacades();
$app->withEloquent();
Daftarkan Middleware dan Service Provider: Masih di file yang sama, tambahkan:

$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 file auth.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