API – SANCTUM (menggunakan username dan password) DI LARAVEL

membuat koneksi API dengan sanctum dengan user password contoh kasus menampilkan data pegawai dari aplikasi Simpeg ke aplikasi Koperasi
Untuk membuat koneksi API antara dua aplikasi Laravel (misalnya: Aplikasi Simpeg sebagai penyedia API, dan Aplikasi Koperasi sebagai klien yang mengakses data pegawai), dengan autentikasi menggunakan Laravel Sanctum dan login via username/password, berikut contoh lengkapnya.

⚙️ APLIKASI SIMPEG (Provider API)

1. Instal Sanctum

composer require laravel/sanctum
php artisan vendor:publish –provider=”Laravel\Sanctum\SanctumServiceProvider”
php artisan migrate
2. Aktifkan Middleware Sanctum
Di bootstrap/app.php (jika Laravel 11), tambahkan:
$app->withMiddleware([
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
]);
3. Model User dan Token
Pastikan model User menggunakan HasApiTokens:

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable {
use HasApiTokens, Notifiable;
}

4. Route Login dan Data Pegawai

Di routes/api.php:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\User;
use App\Models\Pegawai;

Route::post(‘/login’, function (Request $request) {
$credentials = $request->only(‘username’, ‘password’);

if (!Auth::attempt($credentials)) {
return response()->json([‘message’ => ‘Unauthorized’], 401);
}

$user = Auth::user();
$token = $user->createToken(‘api-token’)->plainTextToken;

return response()->json([
‘access_token’ => $token,
‘token_type’ => ‘Bearer’,
]);
});

Proteksi route data pegawai:

Route::middleware(‘auth:sanctum’)->get(‘/pegawai’, function () {
return \App\Models\Pegawai::all(); // sesuaikan model pegawai
});

TAMBAHKAN DI .env

untuk menyimpan url,username dan password untuk akses API

SIMPEG_URL=http://simpeg.test
SIMPEG_USERNAME=admin
SIMPEG_PASSWORD=password123

pada config/services.php

‘simpeg’ => [
‘url’ => env(‘SIMPEG_URL’),
‘username’ => env(‘SIMPEG_USERNAME’),
‘password’ => env(‘SIMPEG_PASSWORD’),
],

Pemakaian di kode di controller :

$response = Http::post(config(‘services.simpeg.url’) . ‘/api/login’, [
‘username’ => config(‘services.simpeg.username’),
‘password’ => config(‘services.simpeg.password’),
]);


🏛️ APLIKASI KOPERASI (Client/Consumer)

1. Ambil Token Login

Contoh pakai HTTP Client Laravel (dari Laravel 7+):

use Illuminate\Support\Facades\Http;

$response = Http::post(‘http://simpeg.test/api/login’, [
‘username’ => ‘admin’,
‘password’ => ‘password123’,
]);

$token = $response[‘access_token’];

2. Ambil Data Pegawai Pakai Token

$response = Http::withToken($token)
->get(‘http://simpeg.test/api/pegawai’);

$pegawai = $response->json();

3. Contoh di Controller

public function getPegawaiFromSimpeg()
{
$login = Http::post(‘http://simpeg.test/api/login’, [
‘username’ => ‘admin’,
‘password’ => ‘password123’,
]);

if (!$login->ok()) {
return response()->json([‘error’ => ‘Login gagal ke Simpeg’]);
}

$token = $login[‘access_token’];

$pegawai = Http::withToken($token)->get(‘http://simpeg.test/api/pegawai’);

return view(‘pegawai_dari_simpeg’, [‘data’ => $pegawai->json()]);
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *