authenticatedUser($request); abort_unless( $this->permissionService->allows($user, Permission::ProjectAdmin, $project), 403, ); return response()->json([ 'data' => $this->buildProjectRepositorySettingsPayload->handle($project, $user), ]); } public function store(StoreRepositoryConnectionRequest $request, Project $project): JsonResponse { $user = $this->authenticatedUser($request); abort_unless( $this->permissionService->allows($user, Permission::ProjectAdmin, $project), 403, ); $repositoryConnection = $this->storeProjectRepositoryConnection->handle($project, $user, $request->validated()); return RepositoryConnectionResource::make($repositoryConnection) ->additional([ 'meta' => [ 'message' => "{$repositoryConnection->repository_full_name} was linked to {$project->name}.", ], ]) ->response() ->setStatusCode(201); } public function update( UpdateRepositoryConnectionRequest $request, Project $project, RepositoryConnection $repositoryConnection, ): JsonResponse { $user = $this->authenticatedUser($request); abort_unless( $this->permissionService->allows($user, Permission::ProjectAdmin, $project), 403, ); $repositoryConnection = $this->updateProjectRepositoryConnection->handle( $project, $repositoryConnection, $user, $request->validated(), ); return RepositoryConnectionResource::make($repositoryConnection) ->additional([ 'meta' => [ 'message' => "{$repositoryConnection->repository_full_name} connection was updated.", ], ]) ->response(); } public function destroy(Request $request, Project $project, RepositoryConnection $repositoryConnection): JsonResponse { $user = $this->authenticatedUser($request); abort_unless( $this->permissionService->allows($user, Permission::ProjectAdmin, $project), 403, ); $this->deleteProjectRepositoryConnection->handle($repositoryConnection); return response()->json(null, 204); } }