creatvstudio/socialite-auth

提供易于配置的社会化身份验证

v2.0.1 2021-03-10 10:36 UTC

This package is auto-updated.

Last update: 2024-09-05 08:52:56 UTC


README

Latest Version on Packagist Total Downloads

此软件包提供易于配置的 Laravel 社会化身份验证。由 CreatvStudio 提供

需求

要开始使用,请使用 composer 安装 Laravel Socialite。请参阅 Laravel Socialite 官方 文档

composer require laravel/socialite

安装

您可以通过 composer 安装此软件包

composer require creatvstudio/socialite-auth

配置

在使用 Socialite 之前,您还需要添加应用程序使用的 OAuth 服务凭据。这些凭据应放置在您的 config/services.php 配置文件中,并应根据应用程序需要的提供者使用键 facebooktwitterlinkedingooglegithubgitlabbitbucket。例如

'facebook' => [
    'client_id' => env('FACEBOOK_CLIENT_ID'),
    'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
    'redirect' => env('APP_URL') . '/login/facebook/callback',
],

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => env('APP_URL') . '/login/github/callback',
],

用户模型

在您的 User 模型中使用 HasSocialite 特性。

use CreatvStudio\SocialiteAuth\HasSocialite;

class User extends Authenticatable
{
    use Notifiable, HasRolesAndAbilities, HasSocialite;

    ...
}

控制器

创建一个新的控制器来处理您的请求

php artisan make:controller Auth/SocialiteController

然后使用 AuthenticatesSocialiteUser 特性。(我们计划在未来创建一个示例)

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Laravel\Socialite\Contracts\User as SocialiteUser;
use CreatvStudio\SocialiteAuth\AuthenticatesSocialiteUser;

class SocialiteController extends Controller
{
    use AuthenticatesSocialiteUser;

    protected $redirectTo = '/home';

    protected $providers = [
        'facebook',
    ];

    /**
     * Creates a user if it does not exist.
     *
     * @param mixed $user
     * @return void
     */
    protected function create(SocialiteUser $user)
    {
        return User::create([
            'name' => $user->name,
            'email' => $user->email,
            'password' => Hash::make(Str::random()),
        ]);
    }
}

已认证

Laravel Auth Controllers 类似,Socialite Auth 提供了一个空的 authenticated(Request $request, $user) 方法,如果需要可以重写。

/**
 * The user has been authenticated.
 *
 * @param \Illuminate\Http\Request $request
 * @param mixed $user
 * @return mixed
 */
protected function authenticated(Request $request, $user)
{
    // Do anything here
}

路由

在您的 routes/web.php 中添加登录路由。

Route::get('/login/{provider}', 'Auth\SocialiteController@login');
Route::get('/login/{provider}/callback', 'Auth\SocialiteController@callback');

自定义守卫

您还可以自定义用于认证和注册用户的“守卫”。要开始,在您的 LoginController、RegisterController 和 ResetPasswordController 上定义一个 guard 方法。该方法应返回一个 guard 实例。

use Illuminate\Support\Facades\Auth;

protected function guard()
{
    return Auth::guard('guard-name');
}

路线图

  • Auth/SocialiteController 添加示例
  • 添加测试

测试

composer test

变更日志

请参阅 CHANGELOG 以获取有关最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 以获取详细信息。

安全性

如果您发现任何安全问题,请通过电子邮件 jeff@creatvstudio.ph 联系我们,而不是使用问题跟踪器。

致谢

许可证

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

Laravel 软件包模板

此软件包是用 Laravel 软件包模板 生成的。