wjbecker/filament-connectify

Filament Connectify - 通过 Laravel Socialite 实现社交登录

0.0.1 2024-04-05 02:51 UTC

This package is auto-updated.

Last update: 2024-09-05 17:03:14 UTC


README

通过 Laravel Socialite 为 Filament v3 添加 OAuth2 登录支持

此包扩展了 Laravel Socialite。Socialite 默认支持通过 Facebook、Twitter、LinkedIn、Google、GitHub、GitLab 和 Bitbucket 进行身份验证。

有关如何配置应用程序以使用这些提供者的更多信息,请参阅 Socialite 文档

通过 Socialite Providers 网站提供许多其他提供者。请参阅每个提供者的文档,以获取有关如何配置应用程序以使用它们的详细信息。

安装

通过 composer 安装包

composer require wjbecker/filament-connectify

发布并迁移迁移文件

php artisan vendor:publish --tag="filament-connectify-migrations
php artisan migrate

要使用提供者图标,您可以为 Blade Font Awesome 品牌图标添加

composer require owenvoke/blade-fontawesome

提供者配置

有关更多信息,请参阅 Socialite 文档

面板配置

将此插件包含在您的面板配置中

use Wjbecker\FilamentConnectify\FilamentConnectifyPlugin;

return $panel
    // ...
    ->plugins([
        // ... Other Plugins
        FilamentConnectifyPlugin::make()
            // (required) add providers
            ->providers([
                'azure' => [
                    'label' => 'Continue with Microsoft',
                    'icon' => 'fab-microsoft', // requires additional package
                ]
            ])
            // (optional) restrict login callback
            ->isAllowedCallback(function (\SocialiteProviders\Manager\OAuth2\User $socialiteUser) {
                $decodedToken = json_decode(base64_decode(str_replace('_', '/', str_replace('-','+',explode('.', $socialiteUser->token)[1]))));
                return $decodedToken->tid === {{azure_tenant_id}};
            })
            // (optional) change the user model class
            ->userModel(\App\Models\User::class)
            // (optional) change redirect url callback
            ->redirectUrlCallback(function ($provider) {
                return 'https://'.tenant('id').'.foo.test'.route(FilamentConnectifyPlugin::get()->getCallbackRoute(), $provider, false);
            })
    ])

示例提供者配置 - Azure Active Directory

首先,您需要参考 Azure Socialite 提供者 的文档。

通常,您会遵循上述链接中提供的提供者文档,但为了演示,我将包括以下步骤。

根据他们的文档,您会通过以下方式安装社区 Azure 提供者:

composer require socialiteproviders/microsoft-azure

然后,您需要配置您的 config/services.php 文件以包括 Azure 提供者的凭证

'azure' => [    
  'client_id' => env('AZURE_CLIENT_ID'),
  'client_secret' => env('AZURE_CLIENT_SECRET'),
  'redirect' => env('AZURE_REDIRECT_URI'),
  'tenant' => env('AZURE_TENANT_ID'),
  'proxy' => env('PROXY')  // optionally
],

此外,您还需要将此提供者的事件监听器添加到您的 app/Providers/EventServiceProvider.php 文件中

protected $listen = [
    // ... other listeners
    \SocialiteProviders\Manager\SocialiteWasCalled::class => [
        // ... other providers
        \SocialiteProviders\Azure\AzureExtendSocialite::class.'@handle',
    ],
];

最后,不要忘记将所需的环境变量添加到您的 .env 文件中

AZURE_CLIENT_ID=
AZURE_CLIENT_SECRET=
AZURE_REDIRECT_URI=
AZURE_TENANT_ID=

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略

鸣谢

许可证

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