diff --git a/app/Http/Controllers/Forms/FormController.php b/app/Http/Controllers/Forms/FormController.php index 8b29d6e0..9c268c5f 100644 --- a/app/Http/Controllers/Forms/FormController.php +++ b/app/Http/Controllers/Forms/FormController.php @@ -218,4 +218,24 @@ class FormController extends Controller return redirect()->to(Storage::temporaryUrl($path, now()->addMinutes(5))); } + + /** + * Updates a form's workspace + */ + public function updateWorkspace($id, $workspace_id) + { + $form = Form::findOrFail($id); + $workspace = Workspace::findOrFail($workspace_id); + + $this->authorize('update', $form); + $this->authorize('view', $workspace); + + $form->workspace_id = $workspace_id; + $form->creator_id = auth()->user()->id; + $form->save(); + + return $this->success([ + 'message' => 'Form workspace updated successfully.', + ]); + } } diff --git a/app/Http/Requests/AnswerFormRequest.php b/app/Http/Requests/AnswerFormRequest.php index 8e381f74..c1f8f9c1 100644 --- a/app/Http/Requests/AnswerFormRequest.php +++ b/app/Http/Requests/AnswerFormRequest.php @@ -27,6 +27,12 @@ class AnswerFormRequest extends FormRequest $this->maxFileSize = $this->form->workspace->max_file_size; } + private function getFieldMaxFileSize($fieldProps) + { + return array_key_exists('max_file_size', $fieldProps) ? + min($fieldProps['max_file_size'] * 1000000, $this->maxFileSize) : $this->maxFileSize; + } + /** * Validate form before use it * @@ -180,7 +186,7 @@ class AnswerFormRequest extends FormRequest if (! empty($property['allowed_file_types'])) { $allowedFileTypes = explode(',', $property['allowed_file_types']); } - $this->requestRules[$property['id'].'.*'] = [new StorageFile($this->maxFileSize, $allowedFileTypes, $this->form)]; + $this->requestRules[$property['id'] . '.*'] = [new StorageFile($this->getFieldMaxFileSize($property), $allowedFileTypes, $this->form)]; return ['array']; case 'email': diff --git a/app/Http/Requests/UserFormRequest.php b/app/Http/Requests/UserFormRequest.php index 7444b525..74660646 100644 --- a/app/Http/Requests/UserFormRequest.php +++ b/app/Http/Requests/UserFormRequest.php @@ -118,6 +118,9 @@ abstract class UserFormRequest extends \Illuminate\Foundation\Http\FormRequest 'properties.*.generates_uuid' => 'boolean|nullable', 'properties.*.generates_auto_increment_id' => 'boolean|nullable', + // For file (min and max) + 'properties.*.max_file_size' => 'min:1|numeric', + // Security & Privacy 'can_be_indexed' => 'boolean', 'password' => 'sometimes|nullable', diff --git a/client/components/forms/CodeInput.client.vue b/client/components/forms/CodeInput.client.vue index 4d4a0090..50704574 100644 --- a/client/components/forms/CodeInput.client.vue +++ b/client/components/forms/CodeInput.client.vue @@ -11,7 +11,7 @@

diff --git a/client/components/forms/RichTextAreaInput.client.vue b/client/components/forms/RichTextAreaInput.client.vue index ccd1d0c0..e3b609c4 100644 --- a/client/components/forms/RichTextAreaInput.client.vue +++ b/client/components/forms/RichTextAreaInput.client.vue @@ -7,7 +7,7 @@ diff --git a/client/components/forms/SignatureInput.vue b/client/components/forms/SignatureInput.vue index c213a9dd..cda0ca9d 100644 --- a/client/components/forms/SignatureInput.vue +++ b/client/components/forms/SignatureInput.vue @@ -7,7 +7,7 @@