[CONTROLLER][AdminPanel] Further ensure form validity

This commit is contained in:
Hugo Sales 2021-08-07 18:22:25 +00:00 committed by Diogo Peralta Cordeiro
parent 47daf6169a
commit 06b9bd9910
Signed by: diogo
GPG Key ID: 18D2D35001FBFAB0

View File

@ -72,11 +72,17 @@ class AdminPanel extends Controller
$data = $form->getData(); $data = $form->getData();
if ($form->isValid() && array_key_exists('setting', $data)) { if ($form->isValid() && array_key_exists('setting', $data)) {
[$section, $setting] = explode(':', $data['setting']); [$section, $setting] = explode(':', $data['setting']);
if (!isset($defaults[$section]) && !isset($defaults[$section][$setting])) {
// @codeCoverageIgnoreStart
throw new ClientException(_m('The supplied field doesn\'t exist'));
// @codeCoverageIgnoreEnd
}
foreach ([ foreach ([
'int' => FILTER_VALIDATE_INT, 'int' => FILTER_VALIDATE_INT,
'bool' => FILTER_VALIDATE_BOOL, 'bool' => FILTER_VALIDATE_BOOL,
'string' => [fn ($v) => strstr($v, ',') === false, fn ($v) => $v], 'string' => [fn ($v) => strstr($v, ',') === false, fn ($v) => $v],
'array' => [fn ($v) => strstr($v, ',') !== false, function ($v) { Formatting::toArray($v, $v); return $v; }], 'array' => [fn ($v) => strstr($v, ',') !== false, function ($v) { Formatting::toArray($v, $v); return $v; }],
] as $type => $validator) { ] as $type => $validator) {
if (!is_array($validator)) { if (!is_array($validator)) {
$value = filter_var($data['value'], $validator, FILTER_NULL_ON_FAILURE); $value = filter_var($data['value'], $validator, FILTER_NULL_ON_FAILURE);