antwerpes/socialite-doccheck

DocCheck 登录提供者,用于 Laravel Socialite

0.1.2 2023-06-27 13:40 UTC

README

Latest Version on Packagist GitHub Code Style Action Status Total Downloads

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)。请参阅 许可证文件 了解更多信息。