1
1
mirror of https://github.com/pterodactyl/panel.git synced 2024-11-22 00:52:43 +01:00

admin: tweaks to validation and rendering

This commit is contained in:
Matthew Penner 2024-04-10 17:39:26 -06:00
parent 319ca683f8
commit f671046947
No known key found for this signature in database
10 changed files with 11 additions and 11 deletions

View File

@ -69,7 +69,7 @@ class EggVariableController extends Controller
{ {
$this->updateService->handle($variable, $request->normalize()); $this->updateService->handle($variable, $request->normalize());
$this->alert->success(trans('admin/nests.variables.notices.variable_updated', [ $this->alert->success(trans('admin/nests.variables.notices.variable_updated', [
'variable' => $variable->name, 'variable' => htmlspecialchars($variable->name),
]))->flash(); ]))->flash();
return redirect()->route('admin.nests.egg.variables', $egg->id); return redirect()->route('admin.nests.egg.variables', $egg->id);
@ -82,7 +82,7 @@ class EggVariableController extends Controller
{ {
$this->variableRepository->delete($variable->id); $this->variableRepository->delete($variable->id);
$this->alert->success(trans('admin/nests.variables.notices.variable_deleted', [ $this->alert->success(trans('admin/nests.variables.notices.variable_deleted', [
'variable' => $variable->name, 'variable' => htmlspecialchars($variable->name),
]))->flash(); ]))->flash();
return redirect()->route('admin.nests.egg.variables', $egg); return redirect()->route('admin.nests.egg.variables', $egg);

View File

@ -56,7 +56,7 @@ class NestController extends Controller
public function store(StoreNestFormRequest $request): RedirectResponse public function store(StoreNestFormRequest $request): RedirectResponse
{ {
$nest = $this->nestCreationService->handle($request->normalize()); $nest = $this->nestCreationService->handle($request->normalize());
$this->alert->success(trans('admin/nests.notices.created', ['name' => $nest->name]))->flash(); $this->alert->success(trans('admin/nests.notices.created', ['name' => htmlspecialchars($nest->name)]))->flash();
return redirect()->route('admin.nests.view', $nest->id); return redirect()->route('admin.nests.view', $nest->id);
} }

View File

@ -131,7 +131,7 @@ class NodesController extends Controller
['ip', '=', $request->input('ip')], ['ip', '=', $request->input('ip')],
]); ]);
$this->alert->success(trans('admin/node.notices.unallocated_deleted', ['ip' => $request->input('ip')])) $this->alert->success(trans('admin/node.notices.unallocated_deleted', ['ip' => htmlspecialchars($request->input('ip'))]))
->flash(); ->flash();
return redirect()->route('admin.nodes.view.allocation', $node); return redirect()->route('admin.nodes.view.allocation', $node);

View File

@ -11,7 +11,7 @@ class EggFormRequest extends AdminFormRequest
$rules = [ $rules = [
'name' => 'required|string|max:191', 'name' => 'required|string|max:191',
'description' => 'nullable|string', 'description' => 'nullable|string',
'docker_images' => ['required', 'string', 'max:191', 'regex:/^([a-zA-Z0-9 .#_\/\-]*)(\|*)([a-zA-Z0-9 .\/:@]*)$/'], 'docker_images' => ['required', 'string', 'regex:/^[\w#\.\/\- ]*\|*[\w\.\/\-:@ ]*$/im'],
'force_outgoing_ip' => 'sometimes|boolean', 'force_outgoing_ip' => 'sometimes|boolean',
'file_denylist' => 'array', 'file_denylist' => 'array',
'startup' => 'required|string', 'startup' => 'required|string',

View File

@ -9,7 +9,7 @@ class StoreNestFormRequest extends AdminFormRequest
public function rules(): array public function rules(): array
{ {
return [ return [
'name' => 'required|string|min:1|max:191', 'name' => 'required|string|min:1|max:191|regex:/^[\w\- ]+$/',
'description' => 'string|nullable', 'description' => 'string|nullable',
]; ];
} }

View File

@ -24,7 +24,7 @@ class SetDockerImageRequest extends ClientApiRequest implements ClientPermission
Assert::isInstanceOf($server, Server::class); Assert::isInstanceOf($server, Server::class);
return [ return [
'docker_image' => ['required', 'string', 'max:191', 'regex:/^([a-zA-Z0-9 .#_\/\-]*)(\|*)([a-zA-Z0-9 .\/:@]*)$/', Rule::in(array_values($server->egg->docker_images))], 'docker_image' => ['required', 'string', 'max:191', 'regex:/^[\w#\.\/\- ]*\|*[\w\.\/\-:@ ]*$/', Rule::in(array_values($server->egg->docker_images))],
]; ];
} }
} }

View File

@ -123,7 +123,7 @@ class Egg extends Model
'file_denylist' => 'array|nullable', 'file_denylist' => 'array|nullable',
'file_denylist.*' => 'string', 'file_denylist.*' => 'string',
'docker_images' => 'required|array|min:1', 'docker_images' => 'required|array|min:1',
'docker_images.*' => ['required', 'string', 'max:191', 'regex:/^([a-zA-Z0-9 .#_\/\-]*)(\|*)([a-zA-Z0-9 .\/:@]*)$/'], 'docker_images.*' => ['required', 'string', 'max:191', 'regex:/^[\w#\.\/\- ]*\|*[\w\.\/\-:@ ]*$/'],
'startup' => 'required|nullable|string', 'startup' => 'required|nullable|string',
'config_from' => 'sometimes|bail|nullable|numeric|exists:eggs,id', 'config_from' => 'sometimes|bail|nullable|numeric|exists:eggs,id',
'config_stop' => 'required_without:config_from|nullable|string|max:191', 'config_stop' => 'required_without:config_from|nullable|string|max:191',

View File

@ -163,7 +163,7 @@ class Server extends Model
'egg_id' => 'required|exists:eggs,id', 'egg_id' => 'required|exists:eggs,id',
'startup' => 'required|string', 'startup' => 'required|string',
'skip_scripts' => 'sometimes|boolean', 'skip_scripts' => 'sometimes|boolean',
'image' => ['required', 'string', 'max:191', 'regex:/^([a-zA-Z0-9 .#_\/\-]*)(\|*)([a-zA-Z0-9 .\/:@]*)$/'], 'image' => ['required', 'string', 'max:191', 'regex:/^[\w\.\/\-:@ ]*$/'],
'database_limit' => 'present|nullable|integer|min:0', 'database_limit' => 'present|nullable|integer|min:0',
'allocation_limit' => 'sometimes|nullable|integer|min:0', 'allocation_limit' => 'sometimes|nullable|integer|min:0',
'backup_limit' => 'present|nullable|integer|min:0', 'backup_limit' => 'present|nullable|integer|min:0',

View File

@ -88,7 +88,7 @@ $('#pEggId').on('change', function (event) {
for (let i = 0; i < keys.length; i++) { for (let i = 0; i < keys.length; i++) {
let opt = document.createElement('option'); let opt = document.createElement('option');
opt.value = images[keys[i]]; opt.value = images[keys[i]];
opt.innerHTML = keys[i] + " (" + images[keys[i]] + ")"; opt.innerText = keys[i] + " (" + images[keys[i]] + ")";
$('#pDefaultContainer').append(opt); $('#pDefaultContainer').append(opt);
} }

View File

@ -119,7 +119,7 @@
for (let i = 0; i < keys.length; i++) { for (let i = 0; i < keys.length; i++) {
let opt = document.createElement('option'); let opt = document.createElement('option');
opt.value = images[keys[i]]; opt.value = images[keys[i]];
opt.innerHTML = keys[i] + " (" + images[keys[i]] + ")"; opt.innerText = keys[i] + " (" + images[keys[i]] + ")";
if (objectChain.id === parseInt(Pterodactyl.server.egg_id) && Pterodactyl.server.image == opt.value) { if (objectChain.id === parseInt(Pterodactyl.server.egg_id) && Pterodactyl.server.image == opt.value) {
opt.selected = true opt.selected = true
} }