diff --git a/app/Classes/Settings/System.php b/app/Classes/Settings/System.php index 3cfd8517..ed85b3b8 100644 --- a/app/Classes/Settings/System.php +++ b/app/Classes/Settings/System.php @@ -45,7 +45,7 @@ public function checkPteroClientkey(){ "per-page-limit" => "required|min:0|integer", "pterodactyl-admin-api-key" => "required|string", "enable-upgrades" => "string", - + "enable-disable-servers" => "string", ]); $validator->after(function ($validator) use ($request) { @@ -85,6 +85,8 @@ public function checkPteroClientkey(){ "SETTINGS::SYSTEM:ENABLE_LOGIN_LOGO" => "enable-login-logo", "SETTINGS::SYSTEM:PTERODACTYL:ADMIN_USER_TOKEN" => "pterodactyl-admin-api-key", "SETTINGS::SYSTEM:ENABLE_UPGRADE" => "enable-upgrade", + "SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS" => "enable-disable-servers", + "SETTINGS::SYSTEM:CREATION_OF_NEW_USERS" => "enable-disable-new-users", ]; diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 3c6fdceb..3f308405 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -251,6 +251,13 @@ class UserController extends Controller 'email' => ['required', 'string', 'email', 'max:64', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'max:191'], ]); + + // Prevent the creation of new users via API if this is enabled. + if (!config('SETTINGS::SYSTEM:CREATION_OF_NEW_USERS', 'true')) { + throw ValidationException::withMessages([ + 'error' => "The creation of new users has been blocked by the system administrator." + ]); + } $user = User::create([ 'name' => $request->input('name'), diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index 5ee16dd5..905c702c 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -135,6 +135,12 @@ class ServerController extends Controller if (config('SETTINGS::USER:FORCE_EMAIL_VERIFICATION', 'false') === 'true' && !Auth::user()->hasVerifiedEmail()) { return redirect()->route('profile.index')->with('error', __("You are required to verify your email address before you can create a server.")); } + + //Required Verification for creating an server + + if (!config('SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS', 'true') && Auth::user()->role != "admin") { + return redirect()->route('servers.index')->with('error', __("The system administrator has blocked the creation of new servers.")); + } //Required Verification for creating an server if (config('SETTINGS::USER:FORCE_DISCORD_VERIFICATION', 'false') === 'true' && !Auth::user()->discordUser) { diff --git a/database/seeders/Seeds/SettingsSeeder.php b/database/seeders/Seeds/SettingsSeeder.php index 4e9dc12d..9e6f0035 100644 --- a/database/seeders/Seeds/SettingsSeeder.php +++ b/database/seeders/Seeds/SettingsSeeder.php @@ -518,9 +518,23 @@ class SettingsSeeder extends Seeder Settings::firstOrCreate([ 'key' => 'SETTINGS::SYSTEM:ENABLE_UPGRADE', ], [ - 'value' =>"", - 'type' => 'string', + 'value' => "false", + 'type' => 'boolean', 'description' => 'Enables the updgrade/downgrade feature for servers' ]); + Settings::firstOrCreate([ + 'key' => 'SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS', + ], [ + 'value' => "true", + 'type' => 'boolean', + 'description' => 'Enable/disable the creation of new servers' + ]); + Settings::firstOrCreate([ + 'key' => 'SETTINGS::SYSTEM:CREATION_OF_NEW_USERS', + ], [ + 'value' => "true", + 'type' => 'boolean', + 'description' => 'Enable/disable the creation of new users' + ]); } } diff --git a/resources/views/admin/settings/tabs/system.blade.php b/resources/views/admin/settings/tabs/system.blade.php index dee381c2..c74c7999 100644 --- a/resources/views/admin/settings/tabs/system.blade.php +++ b/resources/views/admin/settings/tabs/system.blade.php @@ -128,12 +128,21 @@ -
+
+
+ + + + +
@@ -209,6 +218,21 @@
+
+
+
+
+ + +
+ +
+
+
@@ -222,8 +246,6 @@ class="form-control @error('allocation-limit') is-invalid @enderror" required>
- -
{{-- Design --}} diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index e6263ac4..f64de2f5 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -2,118 +2,128 @@ @section('content') -
-
- -
- +
+
+ +
+ @if(!config('SETTINGS::SYSTEM:CREATION_OF_NEW_USERS')) +
+
{{ __('Warning!') }}
+ {{ __('The system administrator has blocked the registration of new users') }} +
+ + @else + -
+ - @error('ip') - - {{ $message }} - - @enderror - - @error('registered') - - {{ $message }} - - @enderror - @if( $errors->has('ptero_registration_error') ) - @foreach( $errors->get('ptero_registration_error') as $err ) + @error('ip') - {{ $err }} - - @endforeach - @endif + {{ $message }} + + @enderror - @csrf -
-
- -
-
- + @error('registered') + + {{ $message }} + + @enderror + @if( $errors->has('ptero_registration_error') ) + @foreach( $errors->get('ptero_registration_error') as $err ) + + {{ $err }} + + @endforeach + @endif + + @csrf +
+
+ +
+
+ +
+
+
+ @error('name') + + {{ $message }} + + @enderror +
+ + +
+
+ +
+
+ +
+
+
+ @error('email') + + {{ $message }} + + @enderror +
+ +
+
+ +
+
+ +
+
+
+ @error('password') + + {{ $message }} + + @enderror +
+ +
+ +
+
+ +
-
- @error('name') - - {{ $message }} - - @enderror -
- - -
-
- -
-
- + @if(config('SETTINGS::REFERRAL::ENABLED') == "true") +
+ +
+
+ +
+
+ @endif + @if (config('SETTINGS::RECAPTCHA:ENABLED') == 'true') +
+ {!! htmlFormSnippet() !!} + @error('g-recaptcha-response') + + {{ $message }} + + @enderror
-
- @error('email') - - {{ $message }} - - @enderror -
+ @endif -
-
- -
-
- -
-
-
- @error('password') - - {{ $message }} - - @enderror -
+
+
-
- -
-
- -
-
-
- @if(config('SETTINGS::REFERRAL::ENABLED') == "true") -
- -
-
- -
-
-
- @endif - @if (config('SETTINGS::RECAPTCHA:ENABLED') == 'true') -
- {!! htmlFormSnippet() !!} - @error('g-recaptcha-response') - - {{ $message }} - - @enderror -
- @endif - -
-
{{--
--}} {{-- --}} {{--
+ @endif @endsection diff --git a/resources/views/servers/create.blade.php b/resources/views/servers/create.blade.php index 4ac74f79..a49aba59 100644 --- a/resources/views/servers/create.blade.php +++ b/resources/views/servers/create.blade.php @@ -34,7 +34,12 @@
{{ __('Server configuration') }}
- + @if (!config("SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS")) +
+ The creation of new servers has been disabled for regular users, enable it again + {{ __('here') }}. +
+ @endif @if ($productCount === 0 || $nodeCount === 0 || count($nests) === 0 || count($eggs) === 0)
{{ __('Error!') }}
diff --git a/routes/web.php b/routes/web.php index f7c0e49c..c3b36047 100644 --- a/routes/web.php +++ b/routes/web.php @@ -152,6 +152,8 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () { Route::get('settings/datatable', [SettingsController::class, 'datatable'])->name('settings.datatable'); Route::patch('settings/updatevalue', [SettingsController::class, 'updatevalue'])->name('settings.updatevalue'); Route::get("settings/checkPteroClientkey", [System::class, 'checkPteroClientkey'])->name('settings.checkPteroClientkey'); + Route::redirect("settings#system", "system")->name('settings.system'); + #settings Route::patch('settings/update/invoice-settings', [Invoices::class, 'updateSettings'])->name('settings.update.invoicesettings'); Route::patch('settings/update/language', [Language::class, 'updateSettings'])->name('settings.update.languagesettings');