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 @@ -
{{__('Register a new membership')}}
+{{__('Register a new membership')}}
-