summaryrefslogtreecommitdiff
path: root/app/Http/Requests/FileUploadRequest.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Http/Requests/FileUploadRequest.php')
-rw-r--r--app/Http/Requests/FileUploadRequest.php59
1 files changed, 59 insertions, 0 deletions
diff --git a/app/Http/Requests/FileUploadRequest.php b/app/Http/Requests/FileUploadRequest.php
new file mode 100644
index 0000000..f4302b8
--- /dev/null
+++ b/app/Http/Requests/FileUploadRequest.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace App\Http\Requests;
+
+use App\Rules\MimeTypeRule;
+use Illuminate\Foundation\Http\FormRequest;
+
+class FileUploadRequest extends FormRequest
+{
+ /**
+ * Determine if the user is authorized to make this request.
+ */
+ public function authorize(): bool
+ {
+ // Public upload system - everyone can upload
+ return true;
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
+ */
+ public function rules(): array
+ {
+ $config = config('fileupload');
+
+ return [
+ 'files' => [
+ 'required',
+ 'array',
+ 'max:' . $config['max_files_per_upload'],
+ ],
+ 'files.*' => [
+ 'required',
+ 'file',
+ 'max:' . $config['max_file_size'], // in KB
+ new MimeTypeRule($config['allowed_mimes']),
+ ],
+ ];
+ }
+
+ /**
+ * Get custom messages for validator errors.
+ */
+ public function messages(): array
+ {
+ $config = config('fileupload');
+
+ return [
+ 'files.required' => 'Please select at least one file to upload.',
+ 'files.array' => 'Invalid file upload format.',
+ 'files.max' => 'You can upload a maximum of ' . $config['max_files_per_upload'] . ' files at once.',
+ 'files.*.required' => 'One or more files are missing.',
+ 'files.*.file' => 'One or more uploads are not valid files.',
+ 'files.*.max' => 'One or more files exceed the maximum size of ' . $config['max_file_size'] . 'KB.',
+ ];
+ }
+}