hanbz/passport-client

Laravel 对 passport 客户端 OAuth2 库的封装。

v1.0.1 2020-11-13 09:07 UTC

This package is auto-updated.

Last update: 2024-09-13 17:52:02 UTC


README

Total Downloads Latest Stable Version License

介绍

从 Laravel Socialite 分支创建,用于构建 Laravel passport 客户端库以实现 OAuth2.0 认证,并使用 Laravel 端

安装

$ composer require hanbz/passport-client

在 .env 中添加配置

CLIENT_ID=oauth_client
CLIENT_SECRET=oauth_secert
REDIRECT=your_callback_url
OAUTH_DOMAIN=your_oauth_server

在 config/service.php 中添加此部分

    'passport' => [
        'client_id' => env('CLIENT_ID'),
        'client_secret' => env('CLIENT_SECRET'),
        'redirect' => env('REDIRECT'),
        'domain' => env('OAUTH_DOMAIN')
    ]

使用方法

使用 Facades 名称 PassportClient 使用此包。驱动名称为 passport。它包括两个函数 redirect 和 user。

redirect 函数会将用户重定向到 OAuth 服务器。

web.php
use App\Http\Controllers\Auth\OAuthController;
use hanbz\PassportClient\Facades\PassportClient;

Route::get('oauth/login', fn() => PassportClient::driver('passport')->redirect())->name('oauth.login');
Route::get('oauth/callback', [OAuthController::class, 'OAuthCallback']);

user 函数将返回用户信息。

AuthController.php
use App\Models\User;
use hanbz\PassportClient\Facades\PassportClient;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;

    public function OAuthCallback()
    {
        $oauth_user = PassportClient::driver('passport')->user();

        $user = User::where('email', $oauth_user->getEmail())->first();

        if (is_null($user)) {
            $name = $oauth_user->getName();
            $email = $oauth_user->getEmail();
            $password = Str::random(8);
            $user = User::create(compact('name', 'email', 'password'));
        }

        Auth::login($user);

        return redirect()->intended('dashboard');
    }

贡献

感谢您考虑为 Laravel passport 客户端做出贡献!

行为准则

为了确保 Laravel 社区对所有成员都持欢迎态度,请查阅并遵守 行为准则

许可证

Laravel passport 客户端是开源软件,使用 MIT 许可证发布。许可证详情