OAuth improvements (#903)

* rework oauth provider creation & lodaing

* add separate setup form

* use wizard for setup

* add provider class for discord

* cleanup and fixes

* don't throw exception when creating duplicate provider

* update profile and login pages

* did not mean to remove the whole else, oops

* use import
This commit is contained in:
Boy132
2025-01-15 18:29:06 +01:00
committed by GitHub
parent 885e03ee06
commit 4ec9171017
12 changed files with 502 additions and 210 deletions

View File

@@ -1,7 +1,5 @@
<?php
use Filament\Support\Colors\Color;
return [
'lockout' => [
@@ -25,116 +23,4 @@ return [
],
],
'oauth' => [
// Default providers
'facebook' => [
'enabled' => env('OAUTH_FACEBOOK_ENABLED'),
'icon' => 'tabler-brand-facebook-f',
'color' => Color::hex('#1877f2'),
'service' => [
'client_id' => env('OAUTH_FACEBOOK_CLIENT_ID'),
'client_secret' => env('OAUTH_FACEBOOK_CLIENT_SECRET'),
],
],
'x' => [
'enabled' => env('OAUTH_X_ENABLED'),
'icon' => 'tabler-brand-x-f',
'color' => Color::hex('#1da1f2'),
'service' => [
'client_id' => env('OAUTH_X_CLIENT_ID'),
'client_secret' => env('OAUTH_X_CLIENT_SECRET'),
],
],
'linkedin' => [
'enabled' => env('OAUTH_LINKEDIN_ENABLED'),
'icon' => 'tabler-brand-linkedin-f',
'color' => Color::hex('#0a66c2'),
'service' => [
'client_id' => env('OAUTH_LINKEDIN_CLIENT_ID'),
'client_secret' => env('OAUTH_LINKEDIN_CLIENT_SECRET'),
],
],
'google' => [
'enabled' => env('OAUTH_GOOGLE_ENABLED'),
'icon' => 'tabler-brand-google-f',
'color' => Color::hex('#4285f4'),
'service' => [
'client_id' => env('OAUTH_GOOGLE_CLIENT_ID'),
'client_secret' => env('OAUTH_GOOGLE_CLIENT_SECRET'),
],
],
'github' => [
'enabled' => env('OAUTH_GITHUB_ENABLED'),
'icon' => 'tabler-brand-github-f',
'color' => Color::hex('#4078c0'),
'service' => [
'client_id' => env('OAUTH_GITHUB_CLIENT_ID'),
'client_secret' => env('OAUTH_GITHUB_CLIENT_SECRET'),
],
],
'gitlab' => [
'enabled' => env('OAUTH_GITLAB_ENABLED'),
'icon' => 'tabler-brand-gitlab',
'color' => Color::hex('#fca326'),
'service' => [
'client_id' => env('OAUTH_GITLAB_CLIENT_ID'),
'client_secret' => env('OAUTH_GITLAB_CLIENT_SECRET'),
],
],
'bitbucket' => [
'enabled' => env('OAUTH_BITBUCKET_ENABLED'),
'icon' => 'tabler-brand-bitbucket-f',
'color' => Color::hex('#205081'),
'service' => [
'client_id' => env('OAUTH_BITBUCKET_CLIENT_ID'),
'client_secret' => env('OAUTH_BITBUCKET_CLIENT_SECRET'),
],
],
'slack' => [
'enabled' => env('OAUTH_SLACK_ENABLED'),
'icon' => 'tabler-brand-slack',
'color' => Color::hex('#6ecadc'),
'service' => [
'client_id' => env('OAUTH_SLACK_CLIENT_ID'),
'client_secret' => env('OAUTH_SLACK_CLIENT_SECRET'),
],
],
// Additional providers from socialiteproviders.com
'authentik' => [
'enabled' => env('OAUTH_AUTHENTIK_ENABLED'),
'icon' => null,
'color' => Color::hex('#fd4b2d'),
'service' => [
'base_url' => env('OAUTH_AUTHENTIK_BASE_URL'),
'client_id' => env('OAUTH_AUTHENTIK_CLIENT_ID'),
'client_secret' => env('OAUTH_AUTHENTIK_CLIENT_SECRET'),
],
'provider' => \SocialiteProviders\Authentik\Provider::class,
],
'discord' => [
'enabled' => env('OAUTH_DISCORD_ENABLED'),
'icon' => 'tabler-brand-discord-f',
'color' => Color::hex('#5865F2'),
'service' => [
'client_id' => env('OAUTH_DISCORD_CLIENT_ID'),
'client_secret' => env('OAUTH_DISCORD_CLIENT_SECRET'),
],
'provider' => \SocialiteProviders\Discord\Provider::class,
],
'steam' => [
'enabled' => env('OAUTH_STEAM_ENABLED'),
'icon' => 'tabler-brand-steam-f',
'color' => Color::hex('#00adee'),
'service' => [
'client_id' => null,
'client_secret' => env('OAUTH_STEAM_CLIENT_SECRET'),
'allowed_hosts' => [
str_replace(['http://', 'https://'], '', env('APP_URL')),
],
],
'provider' => \SocialiteProviders\Steam\Provider::class,
],
],
];