sso-frappe/laravel

Laravel Socialite provider for Frappe SSO — 'Login with Frappe' for Laravel apps.

Maintainers

Package info

github.com/algorithmsEvolve/sso-frappe-laravel

pkg:composer/sso-frappe/laravel

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.1 2026-08-20 17:35 UTC

This package is auto-updated.

Last update: 2026-08-20 17:36:56 UTC


README

Laravel Socialite provider untuk "Login with Frappe".

Menambahkan OAuth2 / OpenID Connect login Frappe ke aplikasi Laravel menggunakan Laravel Socialite.

Instalasi

composer require sso-frappe/laravel

Konfigurasi

1. Buat OAuth Client di Frappe

Masuk ke situs Frappe:

Frappe → Settings → OAuth Client (OAuth Provider = Frappe)

Catat client_id, client_secret, dan isi Redirect URI dengan callback di aplikasi kamu (harus sama persis termasuk protocol).

2. Isi environment variables

FRAPPE_SSO_BASE_URL=https://erp.example.com
FRAPPE_SSO_CLIENT_ID=your-client-id
FRAPPE_SSO_CLIENT_SECRET=your-client-secret
FRAPPE_SSO_REDIRECT_URI=https://app.example.com/auth/frappe/callback

3. ServiceProvider (auto-discovery)

Laravel 11+: auto-discovery otomatis melalui extra.laravel.providers. Tidak perlu konfigurasi tambahan.

Laravel 10: tambahkan secara manual ke bootstrap/providers.php:

SsoFrappe\Laravel\FrappeServiceProvider::class,

4. Publish config (opsional)

php artisan vendor:publish --tag=sso-frappe-config

Usage

Route

// routes/web.php
use Laravel\Socialite\Facades\Socialite;

Route::get('/auth/frappe', function () {
    return Socialite::driver('frappe')->redirect();
})->name('frappe.login');

Route::get('/auth/frappe/callback', function () {
    $frappeUser = Socialite::driver('frappe')->user();

    // Cocokkan user lokal berdasarkan subject ID (stable identifier)
    $identity = \App\Models\UserIdentity::query()
        ->where('provider', 'frappe')
        ->where('provider_subject', $frappeUser->getId())
        ->first();

    // ... lanjut match/create user dan Auth::login()
})->name('frappe.callback');

Contoh lengkap dengan skema users + user_identities (match subject ID dulu, fallback email) lihat dokumentasi sso-frappe.

Object yang dikembalikan oleh Socialite

Property Sumber userinfo Keterangan
getId() sub Stable subject ID — pakai sebagai kunci identitas
getEmail() email Email
getName() name Nama lengkap
getNickname() username Username Frappe
getAvatar() user_image URL avatar
frappe_roles roles Array roles
getRaw() Array userinfo mentah

Fitur yang ditangani otomatis

  • client_secret_post — Socialite default mengirim kredensial di POST body, sesuai kebutuhan Frappe.
  • PKCE S256 — aktif secara default. Nonaktif via use_pkce => false di config.
  • Endpoint eksplisit — tanpa dependency OIDC discovery. Menghindari masalah issuer http/https.
  • Profil dari userinfo endpoint — bukan id_token. Konsisten dengan adapter JavaScript sso-frappe.

Testing

composer install
vendor/bin/phpunit

Lisensi

MIT — lihat LICENSE.