taufik-t/sso-client

A Single Sign-On (SSO) client package utilizing OAuth2

This package's canonical repository appears to be gone and the package has been frozen as a result. Email us for help if needed.

3.4.7 2024-11-01 06:12 UTC

This package is auto-updated.

Last update: 2025-06-29 02:08:59 UTC


README

Integrate Laravel Framework with Single Sign-On (SSO) Client using OAuth2.

Install
composer require taufik-t/sso-client
.env
SSO_CLIENT_ID="9a490422-0cdb-48bb-8ea4-c816786089f4"
SSO_CLIENT_SECRET="VNj0KAWJp2IfSlk2c7L67jdrPPhc0apMZVgDiSxs"
SSO_CLIENT_CALLBACK="https://app.client.com/oauth2/callback"
SSO_HOST="https://sso.server.com"
SSO_HOST_LOGOUT="https://sso.server.com/logout"
Publish config
php artisan vendor:publish --provider="TaufikT\SsoClient\SSOServiceProvider" --force
config/app.php
'providers' => ServiceProvider::defaultProviders()->merge([
    /*
     * Package Service Providers...
     */
    // ...
    TaufikT\SsoClient\SSOServiceProvider::class,
])->toArray(),
app/Http/Kernel.php
protected $middlewareAliases = [
    // ...
    'sso.auth' => \TaufikT\SsoClient\Http\Middleware\Authenticate::class,
    'sso.guest' => \TaufikT\SsoClient\Http\Middleware\RedirectIfAuthenticated::class,
    'sso.role' => \TaufikT\SsoClient\Http\Middleware\RoleMiddleware::class,
];

Middleware via Routes

Route::group(['middleware' => ['sso.auth']], function () {
    // authenticated users only
});
Route::group(['middleware' => ['sso.guest']], function () {
    // unauthenticated users only
});
Route::group(['middleware' => ['sso.auth', 'sso.role:user']], function () {
    // authenticated users with specified role only
});
Route::group(['middleware' => ['sso.auth', 'sso.role:user|admin|manager']], function () {
    // authenticated users with specified roles only
});

Middleware with Controllers

public function __construct()
{
    $this->middleware(['sso.role:super-admin']);
}

Blade directives

@ssoRole('admin')
    <a href="{{ url('/admin') }}">Admin</a>
@endSsoRole
@ssoRole('user|admin')
    <a href="{{ url('/home') }}">Home</a>
@endSsoRole

Logout URL

<a href="{{ route('oauth2.logout', ['redirect' => 'https://your-redirect-url.com']) }}">Logout</a>