1. Go to this page and download the library: Download javaabu/efaas-socialite library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
javaabu / efaas-socialite example snippets
return [
/**
* eFaas client config
*/
'client' => [
/**
* eFaas Client ID
*/
'client_id' => env('EFAAS_CLIENT_ID'),
/**
* eFaas Client Secret
*/
'client_secret' => env('EFAAS_CLIENT_SECRET'),
/**
* eFaas Redirect url
*/
'redirect' => env('EFAAS_REDIRECT_URI'),
/**
* Development mode
* supports "production" and "development"
*/
'mode' => env('EFAAS_MODE', 'development'),
/**
* Default scopes for the eFaas client
*/
'scopes' => [
'openid',
'efaas.profile',
'efaas.birthdate',
'efaas.email',
'efaas.mobile',
'efaas.photo',
'efaas.permanent_address',
'efaas.country',
'efaas.passport_number',
'efaas.work_permit_status'
],
],
/*
* This model will be used to store efaas session sids
* The class must implement \Javaabu\EfaasSocialite\Contracts\EfaasSessionContract
*/
'session_model' => \Javaabu\EfaasSocialite\Models\EfaasSession::class,
/*
* This handler will be used to manage saving and destroying efaas session records
* The class must implement \Javaabu\EfaasSocialite\Contracts\EfaasSessionHandlerContract
*/
'session_handler' => \Javaabu\EfaasSocialite\EfaasSessionHandler::class,
/*
* This is the name of the table that will be created by the migration and
* used by the EfaasSession model shipped with this package.
*/
'table_name' => 'efaas_sessions',
/*
* This is the database connection that will be used by the migration and
* the EfaasSession model shipped with this package. In case it's not set
* Laravel's database.default will be used instead.
*/
'database_connection' => env('EFAAS_SESSIONS_DB_CONNECTION'),
];
use Javaabu\EfaasSocialite\EfaasProvider;
/**
* Register any application services.
*/
public function register(): void
{
EfaasProvider::ignoreRoutes();
}
...
public function handleFrontChannelSingleSignOut(Request $request)
{
$saved_sid = session('efaas_sid');
$request_sid = Socialite::driver('efaas')->getLogoutSid();
if ($request_sid && $saved_sid == $request_sid) {
// the logout session matches your saved sid
// logout your user here
auth()->guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
}
return redirect()->to('/your-redirect-url')
}
...
...
public function handleBackChannelSingleSignOut(Request $request)
{
$sid = Socialite::driver('efaas')->getLogoutSid();
if ($sid) {
Socialite::driver('efaas')
->sessionHandler()
->logoutSessions($sid);
}
// for back channel logout you must return 200 OK response
return response()->json([
'success' => ! empty($request_sid)
]);
}
...
$provider = Socialite::driver('efaas');
$provider->parseJWT($token); // Parses a JWT token string into a Lcobucci\JWT\Token
$provider->getSidFromToken($token); // Validates a given JWT token and returns the sid from the token
$provider->getJwksResponse(false); // Returns the JWKs (JSON Web Keys) response as an array from the eFaas API. Optionally return the response as a json string using the optional boolean argument
$provider->getPublicKey('5CDA5CF378397733DD33EFBDA82D0F317DCC1D53RS256'); // Returns the public key from JWKs for the given key id as a PEM key string
$efaas_user->isMaldivian(); // Check if is a Maldivian
$efaas_user->getDhivehiName(); // Full name in Dhivehi
$efaas_user->getPhotoMimetype(); // Get the mimetype of the user photo
$efaas_user->getPhotoExtension(); // Get the file extension of the user photo
$efaas_user->getPhotoBase64(); // Get the user photo as a base64 encoded string
$efaas_user->getPhotoDataUrl(); // Get the user photo as a data url
$efaas_user->savePhoto('photo', './path/to/save'); // Saves the user photo to ./path/to/save/photo.jpg and returns the full file path
$efaas_user->getAvatar(); // Alias of getPhotoBase64()
$efaas_user->sid; // Session id of the user
$efaas_user->id_token; // ID Token of the user
$efaas_user->token; // Access token of the user
$permanent_address = $efaas_user->permanent_address;
$permanent_address->getFormattedAddress(); // Get the address with the ward abbreviation. eg: M. Blue Light
$permanent_address->getDhivehiFormattedAddress(); // Get the address in Dhivehi with the ward abbreviation. eg: މ. ބުލޫ ލައިޓް