From 9caa3fc83d3bd26dd2d32361b1a1976f1dd83cf2 Mon Sep 17 00:00:00 2001 From: Nenad Ilic Date: Fri, 13 Feb 2026 21:06:25 +0000 Subject: [PATCH] feat: add separate OAuth registration toggle Add is_oauth_registration_enabled setting so admins can allow new users to register through OAuth providers while keeping general (password-based) registration disabled. Closes #8042 --- app/Http/Controllers/OauthController.php | 2 +- app/Livewire/Settings/Advanced.php | 6 +++++ ...ion_enabled_to_instance_settings_table.php | 22 +++++++++++++++++++ .../livewire/settings/advanced.blade.php | 5 +++++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2026_02_13_000001_add_is_oauth_registration_enabled_to_instance_settings_table.php diff --git a/app/Http/Controllers/OauthController.php b/app/Http/Controllers/OauthController.php index 3a3f18c9c..9da063220 100644 --- a/app/Http/Controllers/OauthController.php +++ b/app/Http/Controllers/OauthController.php @@ -22,7 +22,7 @@ class OauthController extends Controller $user = User::whereEmail($oauthUser->email)->first(); if (! $user) { $settings = instanceSettings(); - if (! $settings->is_registration_enabled) { + if (! $settings->is_registration_enabled && ! $settings->is_oauth_registration_enabled) { abort(403, 'Registration is disabled'); } diff --git a/app/Livewire/Settings/Advanced.php b/app/Livewire/Settings/Advanced.php index 16361ce79..b5e716d35 100644 --- a/app/Livewire/Settings/Advanced.php +++ b/app/Livewire/Settings/Advanced.php @@ -14,6 +14,9 @@ class Advanced extends Component #[Validate('boolean')] public bool $is_registration_enabled; + #[Validate('boolean')] + public bool $is_oauth_registration_enabled; + #[Validate('boolean')] public bool $do_not_track; @@ -41,6 +44,7 @@ class Advanced extends Component { return [ 'is_registration_enabled' => 'boolean', + 'is_oauth_registration_enabled' => 'boolean', 'do_not_track' => 'boolean', 'is_dns_validation_enabled' => 'boolean', 'custom_dns_servers' => 'nullable|string', @@ -62,6 +66,7 @@ class Advanced extends Component $this->allowed_ips = $this->settings->allowed_ips; $this->do_not_track = $this->settings->do_not_track; $this->is_registration_enabled = $this->settings->is_registration_enabled; + $this->is_oauth_registration_enabled = $this->settings->is_oauth_registration_enabled; $this->is_dns_validation_enabled = $this->settings->is_dns_validation_enabled; $this->is_api_enabled = $this->settings->is_api_enabled; $this->disable_two_step_confirmation = $this->settings->disable_two_step_confirmation; @@ -138,6 +143,7 @@ class Advanced extends Component { try { $this->settings->is_registration_enabled = $this->is_registration_enabled; + $this->settings->is_oauth_registration_enabled = $this->is_oauth_registration_enabled; $this->settings->do_not_track = $this->do_not_track; $this->settings->is_dns_validation_enabled = $this->is_dns_validation_enabled; $this->settings->custom_dns_servers = $this->custom_dns_servers; diff --git a/database/migrations/2026_02_13_000001_add_is_oauth_registration_enabled_to_instance_settings_table.php b/database/migrations/2026_02_13_000001_add_is_oauth_registration_enabled_to_instance_settings_table.php new file mode 100644 index 000000000..e9415d852 --- /dev/null +++ b/database/migrations/2026_02_13_000001_add_is_oauth_registration_enabled_to_instance_settings_table.php @@ -0,0 +1,22 @@ +boolean('is_oauth_registration_enabled')->default(false)->after('is_registration_enabled'); + }); + } + + public function down(): void + { + Schema::table('instance_settings', function (Blueprint $table) { + $table->dropColumn('is_oauth_registration_enabled'); + }); + } +}; diff --git a/resources/views/livewire/settings/advanced.blade.php b/resources/views/livewire/settings/advanced.blade.php index 3069c8479..dbdbd728c 100644 --- a/resources/views/livewire/settings/advanced.blade.php +++ b/resources/views/livewire/settings/advanced.blade.php @@ -21,6 +21,11 @@ helper="Allow users to self-register. If disabled, only administrators can create accounts." label="Registration Allowed" /> +
+ +