freebuu/socialite-local

本地开发用 Socialite 提供者

v0.1.1-alpha 2023-10-01 19:22 UTC

This package is auto-updated.

Last update: 2024-09-30 01:43:44 UTC


README

介绍

此库用于在本地模拟 OAuth 服务器。所有对 Socialite 的调用都被拦截并替换为本地驱动。仅安装即可使用 - 在大多数情况下无需额外配置。

安装

  • 需要 Socialite v4 或 v5 以及 OAuth2 提供者(目前不支持 OAuth1 提供者)
  • 使用 Composer 安装:composer require --dev freebuu/socialite-local

⚠️ 警告:出于安全原因,仅将此包作为开发依赖项安装。

用法

像平常一样使用 socialite

Socialite::driver('github')->redirect()

您将被重定向到本地页面 - 在那里您可以为主体设置电子邮件、用户名、id 等。提交表单后,您可以像平常一样获取 socialite 用户 - 使用先前输入的数据。

Socialite::driver('github')->user()

附加配置

服务器响应

如果您需要模仿来自服务器的用户结构 - 可以通过 afterResolving 回调实现

public function register()
{
    $this->app->afterResolving('socialite_local.subject_repository', function ($r){
        $r->setUserCallback(function ($data){
            //data is array coming from login form
            //return array with user info
            return [
                'id' => $data['id'] ?? random_int(1000, 10000),
                'uuid' => $data['uuid'] ?? vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex(random_bytes(16)), 4)),
                'email' => $email = $data['email'],
                'username' => $data['username'] ?? $email,
                'name' => $data['name'] ?? mb_substr($email, 0, strpos($email, '@')) . '_name',
            ];
        });
    });
}

用户映射器

默认情况下,库使用原始驱动映射器 - 将服务器响应映射到 User 模型。您可以通过设置 SOCIALITE_LOCAL_USE_ORIGINAL_MAPPER 为 false 来禁用此行为