From e12c4d29e0d7c04cc96d2f03b0dc2cc0d943a76a Mon Sep 17 00:00:00 2001 From: ryzenixx Date: Sat, 7 Feb 2026 00:12:27 +0100 Subject: [PATCH 1/5] feat(auth): add forced oauth login option --- app/Livewire/SettingsOauth.php | 5 ++++ app/Providers/FortifyServiceProvider.php | 5 ++++ ...uth_auto_redirect_to_instance_settings.php | 28 +++++++++++++++++++ .../views/livewire/settings-oauth.blade.php | 11 ++++++++ 4 files changed, 49 insertions(+) create mode 100644 database/migrations/2026_02_07_000001_add_oauth_auto_redirect_to_instance_settings.php diff --git a/app/Livewire/SettingsOauth.php b/app/Livewire/SettingsOauth.php index 6f949b716..f4a6c240e 100644 --- a/app/Livewire/SettingsOauth.php +++ b/app/Livewire/SettingsOauth.php @@ -8,6 +8,7 @@ use Livewire\Component; class SettingsOauth extends Component { public $oauth_settings_map; + public $oauth_auto_redirect; protected function rules() { @@ -28,6 +29,7 @@ class SettingsOauth extends Component if (! isInstanceAdmin()) { return redirect()->route('home'); } + $this->oauth_auto_redirect = instanceSettings()->oauth_auto_redirect; $this->oauth_settings_map = OauthSetting::all()->sortBy('provider')->reduce(function ($carry, $setting) { $carry[$setting->provider] = [ 'id' => $setting->id, @@ -83,6 +85,9 @@ class SettingsOauth extends Component $this->dispatch('success', 'OAuth settings for '.$oauth->provider.' updated successfully!'); } else { + $settings = instanceSettings(); + $settings->update(['oauth_auto_redirect' => $this->oauth_auto_redirect]); + $errors = []; foreach (array_values($this->oauth_settings_map) as $settingData) { $oauth = OauthSetting::find($settingData['id']); diff --git a/app/Providers/FortifyServiceProvider.php b/app/Providers/FortifyServiceProvider.php index 85f38b967..71328f805 100644 --- a/app/Providers/FortifyServiceProvider.php +++ b/app/Providers/FortifyServiceProvider.php @@ -60,6 +60,11 @@ class FortifyServiceProvider extends ServiceProvider $settings = instanceSettings(); $enabled_oauth_providers = OauthSetting::where('enabled', true)->get(); $users = User::count(); + + if ($settings->oauth_auto_redirect && $enabled_oauth_providers->where('provider', $settings->oauth_auto_redirect)->isNotEmpty()) { + return redirect()->route('auth.redirect', ['provider' => $settings->oauth_auto_redirect]); + } + if ($users == 0) { // If there are no users, redirect to registration return redirect()->route('register'); diff --git a/database/migrations/2026_02_07_000001_add_oauth_auto_redirect_to_instance_settings.php b/database/migrations/2026_02_07_000001_add_oauth_auto_redirect_to_instance_settings.php new file mode 100644 index 000000000..92d4e6926 --- /dev/null +++ b/database/migrations/2026_02_07_000001_add_oauth_auto_redirect_to_instance_settings.php @@ -0,0 +1,28 @@ +string('oauth_auto_redirect')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('instance_settings', function (Blueprint $table) { + $table->dropColumn('oauth_auto_redirect'); + }); + } +}; diff --git a/resources/views/livewire/settings-oauth.blade.php b/resources/views/livewire/settings-oauth.blade.php index 7650a5654..54b18123b 100644 --- a/resources/views/livewire/settings-oauth.blade.php +++ b/resources/views/livewire/settings-oauth.blade.php @@ -13,6 +13,17 @@
Custom authentication (OAuth) configurations.
+
+ + + @foreach ($oauth_settings_map as $oauth_setting) + @if ($oauth_setting['enabled']) + + @endif + @endforeach + +
@foreach ($oauth_settings_map as $oauth_setting)
From e5381814f1f80492a8527534516ea5e1acec221a Mon Sep 17 00:00:00 2001 From: ryzenixx Date: Sat, 7 Feb 2026 00:19:39 +0100 Subject: [PATCH 2/5] feat(auth): enable forced oauth login with bypass --- app/Providers/FortifyServiceProvider.php | 2 +- resources/views/livewire/settings-oauth.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Providers/FortifyServiceProvider.php b/app/Providers/FortifyServiceProvider.php index 71328f805..580a2d844 100644 --- a/app/Providers/FortifyServiceProvider.php +++ b/app/Providers/FortifyServiceProvider.php @@ -61,7 +61,7 @@ class FortifyServiceProvider extends ServiceProvider $enabled_oauth_providers = OauthSetting::where('enabled', true)->get(); $users = User::count(); - if ($settings->oauth_auto_redirect && $enabled_oauth_providers->where('provider', $settings->oauth_auto_redirect)->isNotEmpty()) { + if (!$request->has('skip_oauth') && $settings->oauth_auto_redirect && $enabled_oauth_providers->where('provider', $settings->oauth_auto_redirect)->isNotEmpty()) { return redirect()->route('auth.redirect', ['provider' => $settings->oauth_auto_redirect]); } diff --git a/resources/views/livewire/settings-oauth.blade.php b/resources/views/livewire/settings-oauth.blade.php index 54b18123b..7526c08de 100644 --- a/resources/views/livewire/settings-oauth.blade.php +++ b/resources/views/livewire/settings-oauth.blade.php @@ -14,7 +14,7 @@
Custom authentication (OAuth) configurations.
- + @foreach ($oauth_settings_map as $oauth_setting) @if ($oauth_setting['enabled']) From 3f81039f961545791499e1f2e344c663955648db Mon Sep 17 00:00:00 2001 From: ryzenixx Date: Sat, 7 Feb 2026 01:00:08 +0100 Subject: [PATCH 3/5] docs(ui): simplify skip_oauth bypass instruction --- resources/views/livewire/settings-oauth.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/livewire/settings-oauth.blade.php b/resources/views/livewire/settings-oauth.blade.php index 7526c08de..c8fed8daf 100644 --- a/resources/views/livewire/settings-oauth.blade.php +++ b/resources/views/livewire/settings-oauth.blade.php @@ -14,7 +14,7 @@
Custom authentication (OAuth) configurations.
- + @foreach ($oauth_settings_map as $oauth_setting) @if ($oauth_setting['enabled']) From d67eb7fd42f06c113a345d1bb876674e069083a5 Mon Sep 17 00:00:00 2001 From: ryzenixx Date: Sat, 7 Feb 2026 01:38:15 +0100 Subject: [PATCH 4/5] ui: constrain forced oauth login selector width --- resources/views/livewire/settings-oauth.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/livewire/settings-oauth.blade.php b/resources/views/livewire/settings-oauth.blade.php index c8fed8daf..72a07430f 100644 --- a/resources/views/livewire/settings-oauth.blade.php +++ b/resources/views/livewire/settings-oauth.blade.php @@ -13,7 +13,7 @@
Custom authentication (OAuth) configurations.
-
+
@foreach ($oauth_settings_map as $oauth_setting) From d6c30570ab35b39c149c42317cb2a61ab18170d1 Mon Sep 17 00:00:00 2001 From: ryzenixx Date: Sat, 7 Feb 2026 00:50:54 +0100 Subject: [PATCH 5/5] fix(auth): resolve undefined request variable in forced oauth login --- app/Providers/FortifyServiceProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Providers/FortifyServiceProvider.php b/app/Providers/FortifyServiceProvider.php index 580a2d844..551e692f8 100644 --- a/app/Providers/FortifyServiceProvider.php +++ b/app/Providers/FortifyServiceProvider.php @@ -61,7 +61,7 @@ class FortifyServiceProvider extends ServiceProvider $enabled_oauth_providers = OauthSetting::where('enabled', true)->get(); $users = User::count(); - if (!$request->has('skip_oauth') && $settings->oauth_auto_redirect && $enabled_oauth_providers->where('provider', $settings->oauth_auto_redirect)->isNotEmpty()) { + if (!request()->has('skip_oauth') && $settings->oauth_auto_redirect && $enabled_oauth_providers->where('provider', $settings->oauth_auto_redirect)->isNotEmpty()) { return redirect()->route('auth.redirect', ['provider' => $settings->oauth_auto_redirect]); }