diff --git a/src/Fields/Validator.php b/src/Fields/Validator.php index 8fd8866a621..f4dec57d112 100644 --- a/src/Fields/Validator.php +++ b/src/Fields/Validator.php @@ -122,7 +122,7 @@ public function attributes() }, collect())->all(); } - private function parse($rule) + public function parse($rule) { if (is_string($rule) && Str::startsWith($rule, 'new ')) { return $this->parseClassBasedRule($rule); diff --git a/src/Http/Controllers/CP/Assets/AssetsController.php b/src/Http/Controllers/CP/Assets/AssetsController.php index 8f79537b8a5..fe7c3878e85 100644 --- a/src/Http/Controllers/CP/Assets/AssetsController.php +++ b/src/Http/Controllers/CP/Assets/AssetsController.php @@ -2,6 +2,7 @@ namespace Statamic\Http\Controllers\CP\Assets; +use Facades\Statamic\Fields\Validator as FieldValidator; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\ValidationException; @@ -81,8 +82,12 @@ public function store(Request $request) abort_unless($container->allowUploads(), 403); $this->authorize('store', [AssetContract::class, $container]); + $validationRules = collect($container->validationRules()) + ->map(fn ($rule) => FieldValidator::parse($rule)) + ->all(); + $request->validate([ - 'file' => array_merge(['file', new AllowedFile], $container->validationRules()), + 'file' => array_merge(['file', new AllowedFile], $validationRules), ]); $file = $request->file('file');