diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 973872d71..c195c92d7 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -1204,7 +1204,6 @@ export const registerRoutes = async ( }); const externalMigrationQueue = externalMigrationQueueFactory({ - orgService, projectEnvService, projectDAL, projectService, diff --git a/backend/src/services/external-migration/external-migration-fns.ts b/backend/src/services/external-migration/external-migration-fns.ts index e2707c0b2..a69b5ef7c 100644 --- a/backend/src/services/external-migration/external-migration-fns.ts +++ b/backend/src/services/external-migration/external-migration-fns.ts @@ -4,7 +4,7 @@ import sjcl from "sjcl"; import tweetnacl from "tweetnacl"; import tweetnaclUtil from "tweetnacl-util"; -import { OrgMembershipRole, ProjectMembershipRole, SecretType } from "@app/db/schemas"; +import { SecretType } from "@app/db/schemas"; import { BadRequestError, NotFoundError } from "@app/lib/errors"; import { chunkArray } from "@app/lib/fn"; import { logger } from "@app/lib/logger"; @@ -12,7 +12,6 @@ import { alphaNumericNanoId } from "@app/lib/nanoid"; import { TKmsServiceFactory } from "../kms/kms-service"; import { KmsDataKey } from "../kms/kms-types"; -import { TOrgServiceFactory } from "../org/org-service"; import { TProjectDALFactory } from "../project/project-dal"; import { TProjectServiceFactory } from "../project/project-service"; import { TProjectEnvDALFactory } from "../project-env/project-env-dal"; @@ -38,7 +37,6 @@ export type TImportDataIntoInfisicalDTO = { folderDAL: Pick; projectService: Pick; - orgService: Pick; projectEnvService: Pick; secretV2BridgeService: Pick; @@ -113,7 +111,6 @@ export const importDataIntoInfisicalFn = async ({ projectService, projectEnvDAL, projectDAL, - orgService, secretDAL, kmsService, secretVersionDAL, @@ -150,26 +147,6 @@ export const importDataIntoInfisicalFn = async ({ originalToNewProjectId.set(project.id, newProject.id); } - // Invite user importing projects - const invites = await orgService.inviteUserToOrganization({ - verifyPermissions: false, - actorAuthMethod, - actorId, - actorOrgId, - actor, - inviteeEmails: [], - orgId: actorOrgId, - organizationRoleSlug: OrgMembershipRole.NoAccess, - projects: Array.from(originalToNewProjectId.values()).map((project) => ({ - id: project, - projectRoleSlug: [ProjectMembershipRole.Member] - })), - tx - }); - if (!invites) { - throw new BadRequestError({ message: `Failed to invite user to projects: [userId:${actorId}]` }); - } - // Import environments if (data.environments) { for await (const environment of data.environments) { diff --git a/backend/src/services/external-migration/external-migration-queue.ts b/backend/src/services/external-migration/external-migration-queue.ts index 879899d49..0ee51c5fa 100644 --- a/backend/src/services/external-migration/external-migration-queue.ts +++ b/backend/src/services/external-migration/external-migration-queue.ts @@ -4,7 +4,6 @@ import { logger } from "@app/lib/logger"; import { QueueJobs, QueueName, TQueueServiceFactory } from "@app/queue"; import { TKmsServiceFactory } from "../kms/kms-service"; -import { TOrgServiceFactory } from "../org/org-service"; import { TProjectDALFactory } from "../project/project-dal"; import { TProjectServiceFactory } from "../project/project-service"; import { TProjectEnvDALFactory } from "../project-env/project-env-dal"; @@ -34,7 +33,6 @@ export type TExternalMigrationQueueFactoryDep = { folderDAL: Pick; projectService: Pick; - orgService: Pick; projectEnvService: Pick; secretV2BridgeService: Pick; }; @@ -44,7 +42,6 @@ export type TExternalMigrationQueueFactory = ReturnType { const appCfg = getConfig(); - let permission: MongoAbility | undefined; - if (verifyPermissions) { - permission = (await permissionService.getOrgPermission(actor, actorId, orgId, actorAuthMethod, actorOrgId)) - .permission; - } + const { permission } = await permissionService.getOrgPermission(actor, actorId, orgId, actorAuthMethod, actorOrgId); const org = await orgDAL.findOrgById(orgId); @@ -523,15 +512,12 @@ export const orgServiceFactory = ({ } const projectsToInvite = invitedProjects?.length - ? await projectDAL.find( - { - orgId, - $in: { - id: invitedProjects?.map(({ id }) => id) - } - }, - { tx: trx } - ) + ? await projectDAL.find({ + orgId, + $in: { + id: invitedProjects?.map(({ id }) => id) + } + }) : []; if (projectsToInvite.length !== invitedProjects?.length) { throw new ForbiddenRequestError({ @@ -548,7 +534,7 @@ export const orgServiceFactory = ({ const mailsForOrgInvitation: { email: string; userId: string; firstName: string; lastName: string }[] = []; const mailsForProjectInvitation: { email: string[]; projectName: string }[] = []; const newProjectMemberships: TProjectMemberships[] = []; - await (trx || orgDAL).transaction(async (tx) => { + await orgDAL.transaction(async (tx) => { const users: Pick[] = []; for await (const inviteeEmail of inviteeEmails) { @@ -634,16 +620,8 @@ export const orgServiceFactory = ({ }); } - if (verifyPermissions) { - if (!permission) { - throw new ForbiddenRequestError({ - name: "InviteUser", - message: "Failed to invite user because no permission was found" - }); - } - // as its used by project invite also - ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Create, OrgPermissionSubjects.Member); - } + // as its used by project invite also + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Create, OrgPermissionSubjects.Member); let roleId; const orgRole = isCustomOrgRole ? OrgMembershipRole.Custom : organizationRoleSlug; if (isCustomOrgRole) { @@ -684,19 +662,17 @@ export const orgServiceFactory = ({ // if there exist no project membership we set is as given by the request for await (const project of projectsToInvite) { const projectId = project.id; - if (verifyPermissions) { - const { permission: projectPermission } = await permissionService.getProjectPermission( - actor, - actorId, - projectId, - actorAuthMethod, - actorOrgId - ); - ForbiddenError.from(projectPermission).throwUnlessCan( - ProjectPermissionActions.Create, - ProjectPermissionSub.Member - ); - } + const { permission: projectPermission } = await permissionService.getProjectPermission( + actor, + actorId, + projectId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(projectPermission).throwUnlessCan( + ProjectPermissionActions.Create, + ProjectPermissionSub.Member + ); const existingMembers = await projectMembershipDAL.find( { projectId: project.id, diff --git a/backend/src/services/org/org-types.ts b/backend/src/services/org/org-types.ts index 5bda46e5f..d62a2c25b 100644 --- a/backend/src/services/org/org-types.ts +++ b/backend/src/services/org/org-types.ts @@ -1,5 +1,3 @@ -import { Knex } from "knex"; - import { TOrgPermission } from "@app/lib/types"; import { ActorAuthMethod, ActorType } from "../auth/auth-type"; @@ -30,8 +28,6 @@ export type TDeleteOrgMembershipDTO = { export type TInviteUserToOrgDTO = { inviteeEmails: string[]; organizationRoleSlug: string; - tx?: Knex; - verifyPermissions?: boolean; projects?: { id: string; projectRoleSlug?: string[]; diff --git a/backend/src/services/project-env/project-env-service.ts b/backend/src/services/project-env/project-env-service.ts index ecbdd97b7..67bdd867a 100644 --- a/backend/src/services/project-env/project-env-service.ts +++ b/backend/src/services/project-env/project-env-service.ts @@ -39,8 +39,7 @@ export const projectEnvServiceFactory = ({ actorAuthMethod, position, name, - slug, - tx: trx + slug }: TCreateEnvDTO) => { const { permission } = await permissionService.getProjectPermission( actor, @@ -84,7 +83,7 @@ export const projectEnvServiceFactory = ({ }); } - const env = await (trx || projectEnvDAL).transaction(async (tx) => { + const env = await projectEnvDAL.transaction(async (tx) => { if (position !== undefined) { // Check if there's an environment at the specified position const existingEnvWithPosition = await projectEnvDAL.findOne({ projectId, position }, tx); diff --git a/backend/src/services/project-env/project-env-types.ts b/backend/src/services/project-env/project-env-types.ts index 427086cb7..a87c76d4d 100644 --- a/backend/src/services/project-env/project-env-types.ts +++ b/backend/src/services/project-env/project-env-types.ts @@ -1,12 +1,9 @@ -import { Knex } from "knex"; - import { TProjectPermission } from "@app/lib/types"; export type TCreateEnvDTO = { name: string; slug: string; position?: number; - tx?: Knex; } & TProjectPermission; export type TUpdateEnvDTO = { diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts index a520c5439..6e8d95e1c 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts @@ -911,8 +911,7 @@ export const secretV2BridgeServiceFactory = ({ actorOrgId, environment, projectId, - secrets: inputSecrets, - tx: trx + secrets: inputSecrets }: TCreateManySecretDTO) => { const { permission } = await permissionService.getProjectPermission( actor, @@ -952,7 +951,7 @@ export const secretV2BridgeServiceFactory = ({ const { encryptor: secretManagerEncryptor, decryptor: secretManagerDecryptor } = await kmsService.createCipherPairWithDataKey({ type: KmsDataKey.SecretManager, projectId }); - const newSecrets = await (trx || secretDAL).transaction(async (tx) => + const newSecrets = await secretDAL.transaction(async (tx) => fnSecretBulkInsert({ inputSecrets: inputSecrets.map((el) => { const references = getAllNestedSecretReferences(el.secretValue); diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-types.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-types.ts index 02bf5da26..a76c57561 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-types.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-types.ts @@ -81,7 +81,6 @@ export type TCreateManySecretDTO = Omit & { secretPath: string; projectId: string; environment: string; - tx?: Knex; secrets: { secretKey: string; secretValue: string;