antwerpes / socialite-doccheck
DocCheck 登录提供者,用于 Laravel Socialite
0.1.2
2023-06-27 13:40 UTC
Requires
- php: ^8.0|^8.1|^8.2
- ext-json: *
- illuminate/contracts: ^9.28|^10.0
- laravel/socialite: ~5.0
Requires (Dev)
- chiiya/laravel-code-style: ^2.2
- orchestra/testbench: ^6.0|^7.1|^8.0
This package is auto-updated.
Last update: 2024-09-09 02:26:35 UTC
README
Laravel Socialite 提供了 DocCheck 登录功能。兼容经济版和企业版许可证。
安装
您可以通过 composer 安装此软件包
composer require antwerpes/socialite-doccheck
更新您的服务配置(config/services.php
)以下条目
'doccheck' => [ 'client_id' => env('DOCCHECK_CLIENT_KEY'), 'client_secret' => env('DOCCHECK_CLIENT_SECRET'), 'redirect' => env('DOCCHECK_REDIRECT_URI'), 'language' => env('DOCCHECK_LANGUAGE', 'de'), 'template' => env('DOCCHECK_TEMPLATE', 'fullscreen_dc'), 'license' => env('DOCCHECK_LICENSE', 'economy'), ],
用法
在设置环境变量(见上面配置)后,您可以将此提供者作为任何其他 Socialite 提供者使用,请参阅Socialite 文档。提供者返回的用户对象根据许可证不同而不同。对于 economy
许可证,只有 ID 将存在。对于 business
许可证,所有其他字段也将存在。
示例代码
<?php use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Laravel\Socialite\Facades\Socialite; class LoginController extends Controller { public function handleProviderCallback(Request $request) { $details = Socialite::driver('doccheck')->user(); $user = User::query() ->firstOrNew([ 'id' => $details->getId(), ]) // Only available with the `business` license ->fill([ 'email' => $details->getEmail(), 'first_name' => $details->first_name, 'last_name' => $details->last_name, 'title' => $details->title, 'street' => $details->street, 'postal_code' => $details->street, 'city' => $details->city, 'country' => $details->country, 'language' => $details->language, 'gender' => $details->gender, 'profession_id' => $details->profession_id, 'discipline_id' => $details->discipline_id, ]); $user->save(); auth()->login($user); return redirect()->intended('/'); } }
通过 iFrame 登录
为了在您的网站上嵌入登录而不是依赖于重定向,请确保首先使用有效的 iFrame 模板(例如 login_xl
)。接下来,在您的控制器中,不要重定向用户,而是获取构造的重定向 URL 并将其传递到您的视图
public function showLoginForm(): Response { $url = Socialite::driver('doccheck')->redirect()->getTargetUrl(); return response()->view('auth.login', [ 'url' => $url, ]); }
然后,在您的视图中,您可以使用提供的嵌入代码简单地嵌入 iFrame,但将 URL 替换为我们刚刚生成的,例如
<iframe align="left" frameborder="0" width="467" height="231" name="dc_login_iframe" id="dc_login_iframe" src="{{ $url }}" > <a href="{{ $url }}" target="_blank">LOGIN</a> </iframe>
回调逻辑保持不变(见上面示例)。
更新日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
欢迎贡献!在 GitHub 上留下问题,或创建一个 Pull Request。
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。