sso-frappe / laravel
OAuth2 / OIDC client for Frappe SSO — 'Login with Frappe' for Laravel and Lumen apps.
v0.2.0
2026-08-21 09:16 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.0
- illuminate/contracts: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- laravel/socialite: ^5.0
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0|^10.0
- phpunit/phpunit: ^11.0|^12.0
Suggests
- laravel/socialite: Required for the Socialite driver (^5.x). Lumen users can skip it.
Provides
None
Conflicts
None
Replaces
None
README
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