mirror of
https://github.com/pelican-dev/panel.git
synced 2025-05-20 08:44:46 +02:00
Clean up constructors
This commit is contained in:
parent
305374192f
commit
e349f3fc58
@ -10,10 +10,10 @@ class OAuthProvider
|
||||
/** @var OAuthSchemaInterface[] */
|
||||
private array $providers = [];
|
||||
|
||||
/** @return OAuthSchemaInterface[] */
|
||||
public function get(): array
|
||||
/** @return OAuthSchemaInterface[] | OAuthSchemaInterface */
|
||||
public function get(?string $id = null): array|OAuthSchemaInterface
|
||||
{
|
||||
return $this->providers;
|
||||
return $id ? $this->providers[$id] : $this->providers;
|
||||
}
|
||||
|
||||
/** @return OAuthSchemaInterface[] */
|
||||
@ -32,8 +32,8 @@ class OAuthProvider
|
||||
|
||||
config()->set('services.' . $provider->getId(), array_merge($provider->getServiceConfig(), ['redirect' => '/auth/oauth/callback/' . $provider->getId()]));
|
||||
|
||||
if ($provider->getProviderClass()) {
|
||||
Event::listen(fn (SocialiteWasCalled $event) => $event->extendSocialite($provider->getId(), $provider->getProviderClass()));
|
||||
if ($provider->getSocialiteProvider()) {
|
||||
Event::listen(fn (SocialiteWasCalled $event) => $event->extendSocialite($provider->getId(), $provider->getSocialiteProvider()));
|
||||
}
|
||||
|
||||
$this->providers[$provider->getId()] = $provider;
|
||||
|
@ -10,7 +10,7 @@ interface OAuthSchemaInterface
|
||||
public function getId(): string;
|
||||
|
||||
/** @return ?class-string */
|
||||
public function getProviderClass(): ?string;
|
||||
public function getSocialiteProvider(): ?string;
|
||||
|
||||
/**
|
||||
* @return array<string, string|string[]|bool|null>
|
||||
|
@ -13,7 +13,7 @@ final class AuthentikSchema extends OAuthSchema
|
||||
return 'authentik';
|
||||
}
|
||||
|
||||
public function getProviderClass(): string
|
||||
public function getSocialiteProvider(): string
|
||||
{
|
||||
return Provider::class;
|
||||
}
|
||||
|
@ -4,21 +4,17 @@ namespace App\Extensions\OAuth\Schemas;
|
||||
|
||||
final class CommonSchema extends OAuthSchema
|
||||
{
|
||||
public function __construct(private string $id, private ?string $providerClass, private ?string $icon, private ?string $hexColor)
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
public function __construct(
|
||||
private readonly string $id,
|
||||
private readonly ?string $icon,
|
||||
private readonly ?string $hexColor
|
||||
) {}
|
||||
|
||||
public function getId(): string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getProviderClass(): ?string
|
||||
{
|
||||
return $this->providerClass;
|
||||
}
|
||||
|
||||
public function getIcon(): ?string
|
||||
{
|
||||
return $this->icon;
|
||||
|
@ -17,7 +17,7 @@ final class DiscordSchema extends OAuthSchema
|
||||
return 'discord';
|
||||
}
|
||||
|
||||
public function getProviderClass(): string
|
||||
public function getSocialiteProvider(): string
|
||||
{
|
||||
return Provider::class;
|
||||
}
|
||||
|
@ -6,37 +6,13 @@ use App\Extensions\OAuth\OAuthSchemaInterface;
|
||||
use Filament\Forms\Components\Component;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Forms\Components\Wizard\Step;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Str;
|
||||
use SocialiteProviders\Manager\SocialiteWasCalled;
|
||||
|
||||
abstract class OAuthSchema implements OAuthSchemaInterface
|
||||
{
|
||||
/**
|
||||
* @var array<string, static>
|
||||
*/
|
||||
protected static array $providers = [];
|
||||
|
||||
/**
|
||||
* @return self|static[]
|
||||
*/
|
||||
public static function get(?string $id = null): array|self
|
||||
{
|
||||
return $id ? static::$providers[$id] : static::$providers;
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
if ($this->getProviderClass()) {
|
||||
Event::listen(function (SocialiteWasCalled $event) {
|
||||
$event->extendSocialite($this->getId(), $this->getProviderClass());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
abstract public function getId(): string;
|
||||
|
||||
public function getProviderClass(): ?string
|
||||
public function getSocialiteProvider(): ?string
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ final class SteamSchema extends OAuthSchema
|
||||
return 'steam';
|
||||
}
|
||||
|
||||
public function getProviderClass(): string
|
||||
public function getSocialiteProvider(): string
|
||||
{
|
||||
return Provider::class;
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Extensions\OAuth\Schemas\OAuthSchema;
|
||||
use App\Extensions\OAuth\OAuthProvider;
|
||||
use App\Filament\Pages\Auth\EditProfile;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User;
|
||||
@ -18,7 +18,8 @@ class OAuthController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private readonly AuthManager $auth,
|
||||
private readonly UserUpdateService $updateService
|
||||
private readonly UserUpdateService $updateService,
|
||||
private readonly OAuthProvider $oauthProvider
|
||||
) {}
|
||||
|
||||
/**
|
||||
@ -27,7 +28,7 @@ class OAuthController extends Controller
|
||||
public function redirect(string $driver): RedirectResponse
|
||||
{
|
||||
// Driver is disabled - redirect to normal login
|
||||
if (!OAuthSchema::get($driver)->isEnabled()) {
|
||||
if (!$this->oauthProvider->get($driver)->isEnabled()) {
|
||||
return redirect()->route('auth.login');
|
||||
}
|
||||
|
||||
@ -40,7 +41,7 @@ class OAuthController extends Controller
|
||||
public function callback(Request $request, string $driver): RedirectResponse
|
||||
{
|
||||
// Driver is disabled - redirect to normal login
|
||||
if (!OAuthSchema::get($driver)->isEnabled()) {
|
||||
if (!$this->oauthProvider->get($driver)->isEnabled()) {
|
||||
return redirect()->route('auth.login');
|
||||
}
|
||||
|
||||
|
@ -18,14 +18,14 @@ class OAuthServiceProvider extends ServiceProvider
|
||||
$this->app->singleton(OAuthProvider::class, function ($app) {
|
||||
$provider = new OAuthProvider();
|
||||
// Default OAuth providers included with Socialite
|
||||
$provider->register(new CommonSchema('facebook', null, 'tabler-brand-facebook-f', '#1877f2'));
|
||||
$provider->register(new CommonSchema('x', null, 'tabler-brand-x-f', '#1da1f2'));
|
||||
$provider->register(new CommonSchema('linkedin', null, 'tabler-brand-linkedin-f', '#0a66c2'));
|
||||
$provider->register(new CommonSchema('google', null, 'tabler-brand-google-f', '#4285f4'));
|
||||
$provider->register(new CommonSchema('facebook', 'tabler-brand-facebook-f', '#1877f2'));
|
||||
$provider->register(new CommonSchema('x', 'tabler-brand-x-f', '#1da1f2'));
|
||||
$provider->register(new CommonSchema('linkedin', 'tabler-brand-linkedin-f', '#0a66c2'));
|
||||
$provider->register(new CommonSchema('google', 'tabler-brand-google-f', '#4285f4'));
|
||||
$provider->register(new GithubSchema());
|
||||
$provider->register(new GitlabSchema());
|
||||
$provider->register(new CommonSchema('bitbucket', null, 'tabler-brand-bitbucket-f', '#205081'));
|
||||
$provider->register(new CommonSchema('slack', null, 'tabler-brand-slack', '#6ecadc'));
|
||||
$provider->register(new CommonSchema('bitbucket', 'tabler-brand-bitbucket-f', '#205081'));
|
||||
$provider->register(new CommonSchema('slack', 'tabler-brand-slack', '#6ecadc'));
|
||||
|
||||
// Additional OAuth providers from socialiteproviders.com
|
||||
$provider->register(new AuthentikSchema());
|
||||
|
Loading…
x
Reference in New Issue
Block a user