ncit/efaas-socialite

eFaas Provider for Laravel Socialite

1.0.0 2023-07-06 04:08 UTC

This package is not auto-updated.

Last update: 2024-09-27 08:09:59 UTC


README

Laravel Socialite 的 Laravel Socialite 提供程序,用于 eFaas

安装

您可以通过 composer 安装此包

composer require ncit/efaas-socialite

Laravel 5.5 及以上版本使用包自动发现,因此不需要您手动添加 ServiceProvider。

更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组

Ncit\Efaas\Socialite\Providers\EfaasSocialiteServiceProvider::class,

在 config/services.php 中添加配置

'efaas' => [    
    'client_id' => env('EFAAS_CLIENT_ID'),  
    'client_secret' => env('EFAAS_CLIENT_SECRET'),  
    'redirect' => env('EFAAS_CLIENT_REDIRECT_URI'),
    'server_url' => env('EFAAS_URL', 'https://efaas.gov.mv/connect'),
],

使用方法

现在您应该可以使用此提供程序,就像您通常使用 Socialite 一样(假设您已安装了 facade):有关更多信息,请参阅官方 Social 文档

注意:如果您的 Laravel 应用在请求 eFaas 授权端点时收到 403 Forbidden 错误,请请求 NCIT 将您的服务器 IP 加入白名单。

//efaas default scopes are openid and efaas.profile
return Socialite::driver('efaas')->redirect();

//to get extra scopes pass other scopes on scopes methods
return Socialite::driver('efaas')->scopes([
    'openid',
    'efaas.profile',
    'efaas.email',
    'efaas.mobile',
    'efaas.passport_number',
    'efaas.country',
    'efaas.work_permit_status',
    'efaas.photo'
])->redirect();

并在您的回调处理程序中,您可以像这样访问用户数据。

$efaasUser = Socialite::driver('efaas')->user();
$accessToken = $efaasUser->token;

注销 eFaas 用户

在您的 Laravel 注销重定向中,使用在登录期间保存的访问令牌,通过 logOut() 方法重定向到提供程序

return Socialite::driver('efaas')->logOut($access_token, $post_logout_redirect_url);

使用 eFaas 一键登录

此包将自动将 /efaas-one-tap-login 端点添加到您的 Web 路由中,该端点将重定向到带有 eFaas 登录代码的 eFaas。

有时您可能希望自定义由 Efaas 提供商定义的路由。为此,您首先需要通过在应用程序的 AppServiceProvider 的 register 方法中添加 EfaasProvider::ignoreRoutes 来忽略 Efaas 提供商注册的路由

use Ncit\Efaas\EfaasProvider;

/**
 * Register any application services.
 */
public function register(): void
{
    EfaasProvider::ignoreRoutes();
}

然后,您可以将 Efaas 提供商在 其路由文件 中的路由复制到应用程序的 routes/web.php 文件中,并按需修改它们

Route::group([
    'as' => 'efaas.',
    'namespace' => '\Ncit\Efaas\Http\Controllers',
], function () {
    // Efaas routes...
});

从移动应用程序进行身份验证

要从移动应用程序对用户进行身份验证,请通过移动应用程序上的 Web View 将用户重定向到 eFaas 登录屏幕。然后在他们登录 eFaas 并重定向回您的网站后,从 eFaas 拦截 code(授权代码)。

一旦您的移动应用程序收到 auth 代码,请将其发送到您的 API 端点。然后您可以使用以下方式从您的服务器端使用 auth 代码获取 eFaas 用户详细信息

$efaas_user = Socialite::driver('efaas')->userFromCode($code);

在您收到 eFaas 用户后,您可以根据您为 API 使用的任何身份验证方案颁发自己的访问令牌或 API 密钥。

更改 eFaas 登录提示行为

可以通过修改重定向请求中的提示选项来自定义 eFaas 登录提示行为

return Socialite::driver('efaas')->with(['prompt' => 'select_account'])->redirect();

可用的提示选项包括

eFaas 用户的所有可用属性

$id_number = $efaasUser->username;

所有可用的 eFaas 数据字段

测试

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献

安全

如果您发现任何安全相关的问题,请通过电子邮件is@ncit.gov.mv报告,而不是使用问题跟踪器。

致谢

许可

MIT 许可证(MIT)。有关更多信息,请参阅许可文件