From e24a6ba029c5661d6552e1308357e026ea017446 Mon Sep 17 00:00:00 2001 From: Ahmad El-Bardan Date: Fri, 19 Apr 2024 17:00:22 +0200 Subject: [PATCH] Add discord socialite provider support --- composer.json | 3 +++ .../components/socialite-icons/discord.blade.php | 13 +++++++++++++ src/Enums/Provider.php | 3 +++ src/FilamentCompaniesServiceProvider.php | 16 ++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 resources/views/components/socialite-icons/discord.blade.php diff --git a/composer.json b/composer.json index 5a6e652..4efccea 100644 --- a/composer.json +++ b/composer.json @@ -43,6 +43,9 @@ "orchestra/testbench": "^9.0", "phpunit/phpunit": "^10.5" }, + "suggest": { + "socialiteproviders/discord": "To use the discord socialite provider" + }, "autoload": { "psr-4": { "Wallo\\FilamentCompanies\\": "src/" diff --git a/resources/views/components/socialite-icons/discord.blade.php b/resources/views/components/socialite-icons/discord.blade.php new file mode 100644 index 0000000..7dd3dd9 --- /dev/null +++ b/resources/views/components/socialite-icons/discord.blade.php @@ -0,0 +1,13 @@ + diff --git a/src/Enums/Provider.php b/src/Enums/Provider.php index b629190..0bb23e2 100644 --- a/src/Enums/Provider.php +++ b/src/Enums/Provider.php @@ -9,6 +9,7 @@ enum Provider: string implements HasLabel { case Bitbucket = 'bitbucket'; + case Discord = 'discord'; case Facebook = 'facebook'; case Gitlab = 'gitlab'; case Github = 'github'; @@ -23,6 +24,7 @@ public function getLabel(): string { return match ($this) { self::Bitbucket => 'Bitbucket', + self::Discord => 'Discord', self::Facebook => 'Facebook', self::Gitlab => 'GitLab', self::Github => 'GitHub', @@ -42,6 +44,7 @@ public function getIconView(): View { $viewName = match ($this) { self::Bitbucket => 'filament-companies::components.socialite-icons.bitbucket', + self::Discord => 'filament-companies::components.socialite-icons.discord', self::Facebook => 'filament-companies::components.socialite-icons.facebook', self::Gitlab => 'filament-companies::components.socialite-icons.gitlab', self::Github => 'filament-companies::components.socialite-icons.github', diff --git a/src/FilamentCompaniesServiceProvider.php b/src/FilamentCompaniesServiceProvider.php index 9fd9027..b0c9e04 100644 --- a/src/FilamentCompaniesServiceProvider.php +++ b/src/FilamentCompaniesServiceProvider.php @@ -2,8 +2,10 @@ namespace Wallo\FilamentCompanies; +use Illuminate\Support\Facades\Event; use Illuminate\Support\ServiceProvider; use Livewire\Livewire; +use SocialiteProviders\Manager\SocialiteWasCalled; use Wallo\FilamentCompanies\Http\Livewire\CompanyEmployeeManager; use Wallo\FilamentCompanies\Http\Livewire\ConnectedAccountsForm; use Wallo\FilamentCompanies\Http\Livewire\DeleteCompanyForm; @@ -36,6 +38,8 @@ public function boot(): void $this->configurePublishing(); $this->configureCommands(); + $this->configureSocialiteProviders(); + $this->app->booted(function () { $this->configureComponents(); }); @@ -110,4 +114,16 @@ protected function configureCommands(): void Console\InstallCommand::class, ]); } + + /** + * Configure the additional socialite providers. + */ + protected function configureSocialiteProviders(): void + { + Event::listen(function (SocialiteWasCalled $event) { + if (class_exists(\SocialiteProviders\Discord\Provider::class)) { + $event->extendSocialite('discord', \SocialiteProviders\Discord\Provider::class); + } + }); + } }