commit
6c581ae52a
8 changed files with 178 additions and 109 deletions
app
database/seeders/Seeds
resources/views
routes
|
@ -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",
|
||||
];
|
||||
|
||||
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -128,12 +128,21 @@
|
|||
<label for="force-discord-verification">{{ __('Force Discord verification') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="custom-control mb-3 p-0">
|
||||
<div class="custom-control mb-1 p-0">
|
||||
<input value="true" id="force-email-verification" name="force-email-verification"
|
||||
{{ config('SETTINGS::USER:FORCE_EMAIL_VERIFICATION') == 'true' ? 'checked' : '' }}
|
||||
type="checkbox">
|
||||
<label for="force-email-verification">{{ __('Force E-Mail verification') }} </label>
|
||||
</div>
|
||||
<div class="custom-control mb-3 p-0">
|
||||
<input value="true" id="enable-disable-new-users" name="enable-disable-new-users"
|
||||
{{ config('SETTINGS::SYSTEM:CREATION_OF_NEW_USERS') == 'true' ? 'checked' : '' }}
|
||||
type="checkbox">
|
||||
<label for="enable-disable-new-users">{{ __('Creation of new users') }} </label>
|
||||
<i data-toggle="popover" data-trigger="hover" data-html="true" class="fas fa-info-circle"
|
||||
data-content="{{ __('If unchecked, it will disable the registration of new users in the system, and this will also apply to the API.') }}">
|
||||
</i>
|
||||
</div>
|
||||
|
||||
<div class="custom-control mb-3 p-0">
|
||||
<label for="initial-credits">{{ __('Initial Credits') }}</label>
|
||||
|
@ -209,6 +218,21 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="custom-control mb-1 p-0">
|
||||
<div class="col m-0 p-0 d-flex justify-content-between align-items-center">
|
||||
<div>
|
||||
<input value="true" id="enable-disable-servers" name="enable-disable-servers"
|
||||
{{ config('SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS') == 'true' ? 'checked' : '' }}
|
||||
type="checkbox">
|
||||
<label for="enable-disable-servers">{{ __('Creation of new servers') }} </label>
|
||||
</div>
|
||||
<i data-toggle="popover" data-trigger="hover" data-html="true"
|
||||
data-content="{{ __('If unchecked, it will disable the creation of new servers for regular users and system moderators, this has no effect for administrators.') }}"
|
||||
class="fas fa-info-circle"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="custom-control mb-3 p-0">
|
||||
<div class="col m-0 p-0 d-flex justify-content-between align-items-center">
|
||||
|
@ -222,8 +246,6 @@
|
|||
class="form-control @error('allocation-limit') is-invalid @enderror" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
{{-- Design --}}
|
||||
|
|
|
@ -2,118 +2,128 @@
|
|||
|
||||
@section('content')
|
||||
<body class="hold-transition dark-mode register-page">
|
||||
<div class="register-box">
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header text-center">
|
||||
<a href="{{route('welcome')}}" class="h1"><b class="mr-1">{{config('app.name', 'Laravel')}}</b></a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="login-box-msg">{{__('Register a new membership')}}</p>
|
||||
<div class="register-box">
|
||||
<div class="card card-outline card-primary">
|
||||
<div class="card-header text-center">
|
||||
<a href="{{route('welcome')}}" class="h1"><b class="mr-1">{{config('app.name', 'Laravel')}}</b></a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if(!config('SETTINGS::SYSTEM:CREATION_OF_NEW_USERS'))
|
||||
<div class="alert alert-warning p-2 m-2">
|
||||
<h5><i class="icon fas fa-exclamation-circle"></i> {{ __('Warning!') }}</h5>
|
||||
{{ __('The system administrator has blocked the registration of new users') }}
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<a class="btn btn-primary" href="{{ route('login') }}">{{__('Back')}}</a>
|
||||
</div>
|
||||
@else
|
||||
<p class="login-box-msg">{{__('Register a new membership')}}</p>
|
||||
|
||||
<form method="POST" action="{{ route('register') }}">
|
||||
<form method="POST" action="{{ route('register') }}">
|
||||
|
||||
@error('ip')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
|
||||
@error('registered')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
@if( $errors->has('ptero_registration_error') )
|
||||
@foreach( $errors->get('ptero_registration_error') as $err )
|
||||
@error('ip')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $err }}</strong></small>
|
||||
</span>
|
||||
@endforeach
|
||||
@endif
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}"
|
||||
placeholder="{{__('Username')}}" required autocomplete="name" autofocus>
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-user"></span>
|
||||
@error('registered')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
@if( $errors->has('ptero_registration_error') )
|
||||
@foreach( $errors->get('ptero_registration_error') as $err )
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $err }}</strong></small>
|
||||
</span>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}"
|
||||
placeholder="{{__('Username')}}" required autocomplete="name" autofocus>
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-user"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@error('name')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-group mb-3">
|
||||
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="{{__('Email')}}"
|
||||
value="{{ old('email') }}" required autocomplete="email">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-envelope"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@error('email')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-group mb-3">
|
||||
<input type="password" class="form-control @error('password') is-invalid @enderror" placeholder="{{__('Password')}}" name="password" required autocomplete="new-password">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-lock"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@error('password')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="input-group mb-3">
|
||||
<input type="password" class="form-control" name="password_confirmation" placeholder="{{__('Retype password')}}" required autocomplete="new-password">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-lock"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@error('name')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-group mb-3">
|
||||
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="{{__('Email')}}"
|
||||
value="{{ old('email') }}" required autocomplete="email">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-envelope"></span>
|
||||
@if(config('SETTINGS::REFERRAL::ENABLED') == "true")
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" value="{{ \Request::get('ref') }}" class="form-control" name="referral_code" placeholder="{{__('Referral code')}} ({{__("optional")}})">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-user-check"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@if (config('SETTINGS::RECAPTCHA:ENABLED') == 'true')
|
||||
<div class="input-group mb-3">
|
||||
{!! htmlFormSnippet() !!}
|
||||
@error('g-recaptcha-response')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
@error('email')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-group mb-3">
|
||||
<input type="password" class="form-control @error('password') is-invalid @enderror" placeholder="{{__('Password')}}" name="password" required autocomplete="new-password">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-lock"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@error('password')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
|
||||
<div class="input-group mb-3">
|
||||
<input type="password" class="form-control" name="password_confirmation" placeholder="{{__('Retype password')}}" required autocomplete="new-password">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-lock"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if(config('SETTINGS::REFERRAL::ENABLED') == "true")
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" value="{{ \Request::get('ref') }}" class="form-control" name="referral_code" placeholder="{{__('Referral code')}} ({{__("optional")}})">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-user-check"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@if (config('SETTINGS::RECAPTCHA:ENABLED') == 'true')
|
||||
<div class="input-group mb-3">
|
||||
{!! htmlFormSnippet() !!}
|
||||
@error('g-recaptcha-response')
|
||||
<span class="text-danger" role="alert">
|
||||
<small><strong>{{ $message }}</strong></small>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
{{-- <div class="icheck-primary">--}}
|
||||
{{-- <input type="checkbox" id="agreeTerms" name="terms" value="agree">--}}
|
||||
{{-- <label for="agreeTerms">--}}
|
||||
|
@ -147,4 +157,5 @@
|
|||
</div>
|
||||
<!-- /.register-box -->
|
||||
</body>
|
||||
@endif
|
||||
@endsection
|
||||
|
|
|
@ -34,7 +34,12 @@
|
|||
<div class="card-title"><i class="fas fa-cogs mr-2"></i>{{ __('Server configuration') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (!config("SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS"))
|
||||
<div class="alert alert-warning p-2 m-2">
|
||||
The creation of new servers has been disabled for regular users, enable it again
|
||||
<a href="{{route('admin.settings.system')}}">{{ __('here') }}</a>.
|
||||
</div>
|
||||
@endif
|
||||
@if ($productCount === 0 || $nodeCount === 0 || count($nests) === 0 || count($eggs) === 0)
|
||||
<div class="alert alert-danger p-2 m-2">
|
||||
<h5><i class="icon fas fa-exclamation-circle"></i>{{ __('Error!') }}</h5>
|
||||
|
|
|
@ -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');
|
||||
|
|
Loading…
Add table
Reference in a new issue