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..551e692f8 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 (!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]); + } + 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..72a07430f 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)