file request api update

This commit is contained in:
Čarodej
2022-05-04 09:03:18 +02:00
parent cf7e17e188
commit 67b9f7f4dc
3 changed files with 31 additions and 8 deletions
+9 -1
View File
@@ -50,8 +50,16 @@ class Handler extends ExceptionHandler
public function render($request, Throwable $exception) public function render($request, Throwable $exception)
{ {
if ($exception instanceof ModelNotFoundException) { 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() return response()
->redirectTo('/not-found')->setStatusCode(404); ->redirectTo('/not-found')
->setStatusCode(404);
} }
return parent::render($request, $exception); return parent::render($request, $exception);
@@ -2,7 +2,11 @@
namespace Domain\UploadRequest\Controllers; namespace Domain\UploadRequest\Controllers;
use Auth; use Auth;
use Gate;
use Illuminate\Auth\Access\AuthorizationException;
use Notification; use Notification;
use Illuminate\Http\JsonResponse;
use Domain\Folders\Models\Folder;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Domain\UploadRequest\Requests\StoreUploadRequest; use Domain\UploadRequest\Requests\StoreUploadRequest;
use Domain\UploadRequest\Resources\UploadRequestResource; use Domain\UploadRequest\Resources\UploadRequestResource;
@@ -10,8 +14,19 @@ use Domain\UploadRequest\Notifications\UploadRequestNotification;
class CreateUploadRequestController extends Controller 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([ $uploadRequest = Auth::user()->uploadRequest()->create([
'folder_id' => $request->input('folder_id'), 'folder_id' => $request->input('folder_id'),
'email' => $request->input('email'), 'email' => $request->input('email'),
@@ -20,11 +35,11 @@ class CreateUploadRequestController extends Controller
]); ]);
// If user type email, notify by email // If user type email, notify by email
if ($uploadRequest->email) { if ($request->has('email')) {
Notification::route('mail', $uploadRequest->email) Notification::route('mail', $uploadRequest->email)
->notify(new UploadRequestNotification($uploadRequest)); ->notify(new UploadRequestNotification($uploadRequest));
} }
return response(new UploadRequestResource($uploadRequest), 201); return response()->json(new UploadRequestResource($uploadRequest), 201);
} }
} }
@@ -23,10 +23,10 @@ class StoreUploadRequest extends FormRequest
public function rules() public function rules()
{ {
return [ return [
'email' => 'sometimes|string|nullable', 'email' => 'sometimes|email',
'notes' => 'sometimes|string|nullable', 'notes' => 'sometimes|string',
'folder_id' => 'sometimes|string', 'folder_id' => 'sometimes|uuid',
'name' => 'sometimes|string|nullable', 'name' => 'sometimes|string',
]; ];
} }
} }