laravel maintained by sso-frappe
sso-frappe/laravel
OAuth2 / OIDC client for "Login with Frappe".
Package ini punya 2 mode:
- Laravel: pakai
laravel/socialite - Lumen: pakai standalone OAuth client dari package ini, tanpa Socialite
Install
Laravel
composer require sso-frappe/laravel laravel/socialite
Lumen
composer require sso-frappe/laravel
Konfigurasi
FRAPPE_SSO_BASE_URL=https://erp.example.com
FRAPPE_SSO_CLIENT_ID=<oauth-client-id>
FRAPPE_SSO_CLIENT_SECRET=<oauth-client-secret>
FRAPPE_SSO_REDIRECT_URI=https://app.example.com/auth/frappe/callback
Laravel usage
Install Socialite, lalu register route seperti biasa:
use Laravel\Socialite\Facades\Socialite;
Route::get('/auth/frappe', fn () => Socialite::driver('frappe')->redirect());
Route::get('/auth/frappe/callback', function () {
$frappeUser = Socialite::driver('frappe')->user();
// Cocokkan user lokal via provider_subject dulu, fallback email.
});
Lumen usage
Lumen tidak pakai Socialite. Pakai standalone client:
use SsoFrappe\Laravel\FrappeClient;
$client = app(FrappeClient::class);
$url = $client->authorizationUrl($state, $codeChallenge);
$token = $client->exchangeCode($code, $codeVerifier);
$profile = $client->getUserByToken($token['access_token']);
$user = $client->mapUser($profile);
Notes
laravel/socialitejadi dependency opsional untuk Laravel saja- Lumen tidak perlu Socialite sama sekali
- Config publish tetap tersedia kalau
config_path()ada - Package ini tetap mendukung PKCE S256 dan
client_secret_post
License
MIT