fix(api): reject unknown fields on database import

Run validator fails() before adding extra-field errors so Laravel does not replace the message bag and accept undocumented properties.
This commit is contained in:
Andras Bacsai
2026-09-09 13:06:18 +02:00
parent 903b5d3a0d
commit 25e61deefd
2 changed files with 25 additions and 5 deletions
@@ -70,11 +70,14 @@ trait HandlesDatabaseImportsApi
'dump_all' => ['sometimes', 'boolean'],
'replace_existing' => ['sometimes', 'boolean'],
]);
foreach (array_diff(array_keys($payload), $allowed) as $field) {
$validator->errors()->add($field, 'This field is not allowed.');
}
if ($validator->fails() || $validator->errors()->isNotEmpty()) {
return response()->json(['message' => 'Validation failed.', 'errors' => $validator->errors()], 422);
$extraFields = array_diff(array_keys($payload), $allowed);
if ($validator->fails() || ! empty($extraFields)) {
$errors = $validator->errors();
foreach ($extraFields as $field) {
$errors->add($field, 'This field is not allowed.');
}
return response()->json(['message' => 'Validation failed.', 'errors' => $errors], 422);
}
try {