From 67b9f7f4dc2fda6660b59acfa8f2ad004b630ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Carodej?= Date: Wed, 4 May 2022 09:03:18 +0200 Subject: [PATCH] file request api update --- src/App/Exceptions/Handler.php | 10 ++++++++- .../CreateUploadRequestController.php | 21 ++++++++++++++++--- .../Requests/StoreUploadRequest.php | 8 +++---- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/App/Exceptions/Handler.php b/src/App/Exceptions/Handler.php index eecf61b7..d79b6cd1 100644 --- a/src/App/Exceptions/Handler.php +++ b/src/App/Exceptions/Handler.php @@ -50,8 +50,16 @@ class Handler extends ExceptionHandler public function render($request, Throwable $exception) { if ($exception instanceof ModelNotFoundException) { + if (in_array('application/json', $request->getAcceptableContentTypes())) { + return response()->json([ + 'type' => 'error', + 'message' => "We couldn't find your requested item.", + ], 404); + } + return response() - ->redirectTo('/not-found')->setStatusCode(404); + ->redirectTo('/not-found') + ->setStatusCode(404); } return parent::render($request, $exception); diff --git a/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php b/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php index a30983ae..8a91f68b 100644 --- a/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php +++ b/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php @@ -2,7 +2,11 @@ namespace Domain\UploadRequest\Controllers; use Auth; +use Gate; +use Illuminate\Auth\Access\AuthorizationException; use Notification; +use Illuminate\Http\JsonResponse; +use Domain\Folders\Models\Folder; use App\Http\Controllers\Controller; use Domain\UploadRequest\Requests\StoreUploadRequest; use Domain\UploadRequest\Resources\UploadRequestResource; @@ -10,8 +14,19 @@ use Domain\UploadRequest\Notifications\UploadRequestNotification; class CreateUploadRequestController extends Controller { - public function __invoke(StoreUploadRequest $request) + /** + * @throws AuthorizationException + */ + public function __invoke(StoreUploadRequest $request): JsonResponse { + // Check if user is owner of the file + if ($request->has('folder_id')) { + $folder = Folder::findOrFail($request->input('folder_id')); + + Gate::authorize('owner', [$folder]); + } + + // Create upload request $uploadRequest = Auth::user()->uploadRequest()->create([ 'folder_id' => $request->input('folder_id'), 'email' => $request->input('email'), @@ -20,11 +35,11 @@ class CreateUploadRequestController extends Controller ]); // If user type email, notify by email - if ($uploadRequest->email) { + if ($request->has('email')) { Notification::route('mail', $uploadRequest->email) ->notify(new UploadRequestNotification($uploadRequest)); } - return response(new UploadRequestResource($uploadRequest), 201); + return response()->json(new UploadRequestResource($uploadRequest), 201); } } diff --git a/src/Domain/UploadRequest/Requests/StoreUploadRequest.php b/src/Domain/UploadRequest/Requests/StoreUploadRequest.php index 44c9c0b0..c259e4eb 100644 --- a/src/Domain/UploadRequest/Requests/StoreUploadRequest.php +++ b/src/Domain/UploadRequest/Requests/StoreUploadRequest.php @@ -23,10 +23,10 @@ class StoreUploadRequest extends FormRequest public function rules() { return [ - 'email' => 'sometimes|string|nullable', - 'notes' => 'sometimes|string|nullable', - 'folder_id' => 'sometimes|string', - 'name' => 'sometimes|string|nullable', + 'email' => 'sometimes|email', + 'notes' => 'sometimes|string', + 'folder_id' => 'sometimes|uuid', + 'name' => 'sometimes|string', ]; } }