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
Requires
- php: >=7.0.0
- firebase/php-jwt: >=6.10
- guzzlehttp/guzzle: >=7.0
- illuminate/session: >=5.0
- phpseclib/phpseclib: >=3.0
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>