josecl / claveunica
Chile政府ClaveÚnica OAuth2认证服务的Laravel客户端
v1.0.0
2022-08-29 13:29 UTC
Requires
- php: ^8.0
- ext-json: *
- socialiteproviders/manager: ~4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.9
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.2
- pestphp/pest-plugin-mock: ^1.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
README
Chile政府ClaveÚnica OAuth2认证服务的Laravel客户端。
基于 socialiteproviders/claveunica,允许在开发环境中通过 josecl/emulador-claveunica 模拟ClaveÚnica服务。
要求
- Laravel 9
- php 8.0
安装和配置
使用方式类似于 Socialite 提供者。
安装依赖
composer require josecl/claveunica
将配置添加到 config/services.php
文件中
'claveunica' => [ 'client_id' => env('CLAVEUNICA_CLIENT_ID'), 'client_secret' => env('CLAVEUNICA_CLIENT_SECRET'), 'redirect' => env('CLAVEUNICA_REDIRECT_URI') ],
在 app/Providers/EventServiceProvider.php
文件中添加 事件监听器 对 SocialiteWasCalled
事件
protected $listen = [ \SocialiteProviders\Manager\SocialiteWasCalled::class => [ // ... \Josecl\ClaveUnica\ClaveUnicaExtendSocialite::class . '@handle', ], ];
使用方法
使用控制器进行重定向以使用OAuth服务
return Socialite::driver('claveunica')->redirect();
用户完成认证流程后,将被重定向到由 CLAVEUNICA_REDIRECT_URI
定义的URL。
您需要配置第二个控制器来处理该重定向并完成您的应用程序中的登录。您可以通过以下示例获取认证用户的资料
$claveUnicaUser = Socialite::driver('claveunica')->user(); dump($claveUnicaUser->run); dump($claveUnicaUser->dv); dump($claveUnicaUser->first_name); dump($claveUnicaUser->last_name);
ClaveÚnica模拟器
在开发环境中,您可以通过 josecl/emulador-claveunica 模拟ClaveÚnica流程来登录。
安装
composer require josecl/emulador-claveunica
使用 josecl/emulador-claveunica 的文档更新 config/services.php
文件中的附加参数并配置环境变量。
'claveunica' => [ 'client_id' => env('CLAVEUNICA_CLIENT_ID'), 'client_secret' => env('CLAVEUNICA_CLIENT_SECRET'), 'redirect' => env('CLAVEUNICA_REDIRECT_URI') // Configura servicio alternativo a ClaveÚnica 'auth_uri' => env('CLAVEUNICA_AUTH_URI', 'https://accounts.claveunica.gob.cl/openid/authorize'), 'token_uri' => env('CLAVEUNICA_TOKEN_URI', 'https://accounts.claveunica.gob.cl/openid/token'), 'user_uri' => env('CLAVEUNICA_USER_URI', 'https://www.claveunica.gob.cl/openid/userinfo'), ],