user(); abort_unless( $this->permissionService->allows($user, Permission::ProjectAdmin, $project), 403, ); return Inertia::render( 'projects/settings/Repositories', $this->buildProjectRepositorySettingsPayload->handle($project, $user, session('status')), ); } public function store( StoreRepositoryConnectionRequest $request, Project $project, ): RedirectResponse { $user = $request->user(); abort_unless( $this->permissionService->allows($user, Permission::ProjectAdmin, $project), 403, ); $repositoryConnection = $this->storeProjectRepositoryConnection->handle($project, $user, $request->validated()); return to_route('projects.settings.repositories', $project) ->with('status', "{$repositoryConnection->repository_full_name} was linked to {$project->name}."); } public function update( UpdateRepositoryConnectionRequest $request, Project $project, RepositoryConnection $repositoryConnection, ): RedirectResponse { $user = $request->user(); abort_unless( $this->permissionService->allows($user, Permission::ProjectAdmin, $project), 403, ); $repositoryConnection = $this->updateProjectRepositoryConnection->handle( $project, $repositoryConnection, $user, $request->validated(), ); return to_route('projects.settings.repositories', $project) ->with('status', "{$repositoryConnection->fresh()->repository_full_name} connection was updated."); } public function destroy( Request $request, Project $project, RepositoryConnection $repositoryConnection, ): RedirectResponse { abort_unless( $this->permissionService->allows($request->user(), Permission::ProjectAdmin, $project), 403, ); $repositoryLabel = $this->deleteProjectRepositoryConnection->handle($repositoryConnection); return to_route('projects.settings.repositories', $project) ->with('status', "{$repositoryLabel} was removed from the project."); } }