diff --git a/app/Api/V1/Controllers/AttachmentController.php b/app/Api/V1/Controllers/AttachmentController.php index 7525029681..7254ed45bf 100644 --- a/app/Api/V1/Controllers/AttachmentController.php +++ b/app/Api/V1/Controllers/AttachmentController.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers; -use FireflyIII\Api\V1\Requests\AttachmentRequest; +use FireflyIII\Api\V1\Requests\AttachmentStoreRequest; +use FireflyIII\Api\V1\Requests\AttachmentUpdateRequest; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Helpers\Attachments\AttachmentHelperInterface; use FireflyIII\Models\Attachment; @@ -182,12 +183,12 @@ class AttachmentController extends Controller /** * Store a newly created resource in storage. * - * @param AttachmentRequest $request + * @param AttachmentStoreRequest $request * * @return JsonResponse * @throws FireflyException */ - public function store(AttachmentRequest $request): JsonResponse + public function store(AttachmentStoreRequest $request): JsonResponse { $data = $request->getAll(); $attachment = $this->repository->store($data); @@ -207,12 +208,12 @@ class AttachmentController extends Controller /** * Update the specified resource in storage. * - * @param AttachmentRequest $request + * @param AttachmentUpdateRequest $request * @param Attachment $attachment * * @return JsonResponse */ - public function update(AttachmentRequest $request, Attachment $attachment): JsonResponse + public function update(AttachmentUpdateRequest $request, Attachment $attachment): JsonResponse { $data = $request->getAll(); $this->repository->update($attachment, $data); diff --git a/app/Api/V1/Requests/AttachmentRequest.php b/app/Api/V1/Requests/AttachmentStoreRequest.php similarity index 82% rename from app/Api/V1/Requests/AttachmentRequest.php rename to app/Api/V1/Requests/AttachmentStoreRequest.php index d571592c0f..94884f1e9a 100644 --- a/app/Api/V1/Requests/AttachmentRequest.php +++ b/app/Api/V1/Requests/AttachmentStoreRequest.php @@ -1,7 +1,7 @@ string('model'); - $rules = [ + return [ 'filename' => 'required|between:1,255', 'title' => 'between:1,255', 'notes' => 'between:1,65000', 'model' => sprintf('required|in:%s', $models), 'model_id' => ['required', 'numeric', new IsValidAttachmentModel($model)], ]; - switch ($this->method()) { - default: - break; - case 'PUT': - case 'PATCH': - unset($rules['model'], $rules['model_id']); - $rules['filename'] = 'between:1,255'; - break; - } - - return $rules; } } diff --git a/app/Api/V1/Requests/AttachmentUpdateRequest.php b/app/Api/V1/Requests/AttachmentUpdateRequest.php new file mode 100644 index 0000000000..0bc823b402 --- /dev/null +++ b/app/Api/V1/Requests/AttachmentUpdateRequest.php @@ -0,0 +1,73 @@ +. + */ + +declare(strict_types=1); + +namespace FireflyIII\Api\V1\Requests; + +/** + * ClassAttachmentUpdateRequest + * + * @codeCoverageIgnore + */ +class AttachmentUpdateRequest extends Request +{ + /** + * Authorize logged in users. + * + * @return bool + */ + public function authorize(): bool + { + // Only allow authenticated users + return auth()->check(); + } + + /** + * Get all data from the request. + * + * @return array + */ + public function getAll(): array + { + return [ + 'filename' => $this->string('filename'), + 'title' => $this->string('title'), + 'notes' => $this->string('notes'), + 'model' => $this->string('model'), + 'model_id' => $this->integer('model_id'), + ]; + } + + /** + * The rules that the incoming request must be matched against. + * + * @return array + */ + public function rules(): array + { + return [ + 'filename' => 'between:1,255', + 'title' => 'between:1,255', + 'notes' => 'between:1,65000', + ]; + } +}