diff --git a/app/Filament/Pages/Settings.php b/app/Filament/Pages/Settings.php index fcd8323e..73c8db09 100644 --- a/app/Filament/Pages/Settings.php +++ b/app/Filament/Pages/Settings.php @@ -2,9 +2,6 @@ namespace App\Filament\Pages; -use Filament\Actions\Action; -use Filament\Notifications\Notification; -use Filament\Support\Enums\Alignment; use Storage; use App\Models\Board; use App\Enums\UserRole; @@ -12,6 +9,7 @@ use Filament\Forms\Form; use Illuminate\Support\Str; use App\Enums\InboxWorkflow; +use Filament\Actions\Action; use App\Services\GitHubService; use Filament\Pages\SettingsPage; use App\Settings\GeneralSettings; @@ -21,11 +19,13 @@ use Filament\Forms\Components\Group; use Filament\Forms\Components\Select; use Filament\Forms\Components\Toggle; +use Filament\Support\Enums\Alignment; use Filament\Forms\Components\Section; use Filament\Forms\Components\Repeater; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TagsInput; use Filament\Forms\Components\TextInput; +use Filament\Notifications\Notification; use Filament\Forms\Components\RichEditor; class Settings extends SettingsPage @@ -113,6 +113,10 @@ public function form(Form $form): Form ->label('Disallow users to upload files or images via the markdown editors.') ->columnSpan(1), + Toggle::make('disable_user_registration') + ->label('Disable user registration') + ->columnSpan(1), + Toggle::make('show_github_link') ->label('Show a link to the linked GitHub issue on the item page') ->columnSpan(1) diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 187972d7..e4d8670a 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Auth; use App\Models\User; +use App\Settings\GeneralSettings; use App\Http\Controllers\Controller; use App\SocialProviders\SsoProvider; use Illuminate\Support\Facades\Hash; @@ -36,6 +37,10 @@ protected function validator(array $data) protected function create(array $data) { + if (app(GeneralSettings::class)->disable_user_registration) { + abort(301, 'User registration is disabled.'); + } + return User::create([ 'name' => $data['name'], 'email' => $data['email'], @@ -45,6 +50,10 @@ protected function create(array $data) public function showRegistrationForm() { + if (app(GeneralSettings::class)->disable_user_registration) { + return redirect()->route('home'); + } + if (SsoProvider::isForced()) { return to_route('oauth.login'); } diff --git a/app/Settings/GeneralSettings.php b/app/Settings/GeneralSettings.php index 4d99bf1d..71a4188c 100644 --- a/app/Settings/GeneralSettings.php +++ b/app/Settings/GeneralSettings.php @@ -30,6 +30,7 @@ class GeneralSettings extends Settings public bool $show_changelog_author; public bool $show_changelog_related_items; public bool $disable_file_uploads; + public bool $disable_user_registration; public array $excluded_matching_search_words; public array $profanity_words; public bool $show_github_link; diff --git a/database/settings/2024_01_09_181742_create_disable_user_setting.php b/database/settings/2024_01_09_181742_create_disable_user_setting.php new file mode 100644 index 00000000..ae91dd92 --- /dev/null +++ b/database/settings/2024_01_09_181742_create_disable_user_setting.php @@ -0,0 +1,10 @@ +migrator->add('general.disable_user_registration', false); + } +}; diff --git a/resources/views/livewire/header.blade.php b/resources/views/livewire/header.blade.php index 3810e677..cfd2b8b5 100644 --- a/resources/views/livewire/header.blade.php +++ b/resources/views/livewire/header.blade.php @@ -22,12 +22,14 @@ {{ trans('auth.login') }} -