user(); abort_unless( $this->permissionService->allows($user, Permission::ProjectAdmin, $project), 403, ); $repositoryConnection = $this->storeProjectRepositoryConnection->handle($project, $user, $request->validated()); return $this->settingsRedirect($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 $this->settingsRedirect($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 $this->settingsRedirect($project) ->with('status', "{$repositoryLabel} was removed from the project."); } private function settingsRedirect(Project $project): RedirectResponse { return to_route('projects.settings.index', [ 'project' => $project, 'section' => ProjectSettingsSection::Repositories->value, ]); } }