From 8c3569a047fd8da6f4969e1da43b8c15d02582d8 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 13 Feb 2024 20:17:57 +0100 Subject: [PATCH] Check if project is v2 before allowing a bot to be created --- backend/src/server/routes/index.ts | 2 +- .../src/services/project-bot/project-bot-service.ts | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 3952ea980..0cdc98791 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -281,7 +281,7 @@ export const registerRoutes = async ( secretScanningDAL, secretScanningQueue }); - const projectBotService = projectBotServiceFactory({ permissionService, projectBotDAL }); + const projectBotService = projectBotServiceFactory({ permissionService, projectBotDAL, projectDAL }); const projectMembershipService = projectMembershipServiceFactory({ projectMembershipDAL, diff --git a/backend/src/services/project-bot/project-bot-service.ts b/backend/src/services/project-bot/project-bot-service.ts index 20419b610..f5298fdc2 100644 --- a/backend/src/services/project-bot/project-bot-service.ts +++ b/backend/src/services/project-bot/project-bot-service.ts @@ -113,6 +113,16 @@ export const projectBotServiceFactory = ({ const { permission } = await permissionService.getProjectPermission(actor, actorId, bot.projectId, actorOrgId); ForbiddenError.from(permission).throwUnlessCan(ProjectPermissionActions.Edit, ProjectPermissionSub.Integrations); + const project = await projectBotDAL.findProjectByBotId(botId); + + if (!project) { + throw new BadRequestError({ message: "Failed to find project by bot ID" }); + } + + if (project.version === "v2") { + throw new BadRequestError({ message: "Failed to set bot active, project has a default bot enabled" }); + } + if (isActive) { if (!botKey?.nonce || !botKey?.encryptedKey) { throw new BadRequestError({ message: "Failed to set bot active - missing bot key" });