listVisibleProjects->handle($this->authenticatedUser($request)), ); } public function store(StoreProjectRequest $request): JsonResponse { $project = $this->createProject->handle($request->validated(), $this->authenticatedUser($request)); return ProjectResource::make($project) ->additional([ 'meta' => [ 'message' => "{$project->name} was created.", ], ]) ->response() ->setStatusCode(201); } public function show(Request $request, Project $project): ProjectResource { $user = $this->authenticatedUser($request); abort_unless( $this->permissionService->allows($user, Permission::ProjectRead, $project), 403, ); return ProjectResource::make($project); } public function destroy(DeleteProjectRequest $request, Project $project): JsonResponse { $request->validated(); $this->deleteProject->handle($project); return response()->json(null, 204); } }