mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 16:27:46 +00:00
removed redundancies
This commit is contained in:
@@ -1204,7 +1204,6 @@ export const registerRoutes = async (
|
|||||||
});
|
});
|
||||||
|
|
||||||
const externalMigrationQueue = externalMigrationQueueFactory({
|
const externalMigrationQueue = externalMigrationQueueFactory({
|
||||||
orgService,
|
|
||||||
projectEnvService,
|
projectEnvService,
|
||||||
projectDAL,
|
projectDAL,
|
||||||
projectService,
|
projectService,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import sjcl from "sjcl";
|
|||||||
import tweetnacl from "tweetnacl";
|
import tweetnacl from "tweetnacl";
|
||||||
import tweetnaclUtil from "tweetnacl-util";
|
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 { BadRequestError, NotFoundError } from "@app/lib/errors";
|
||||||
import { chunkArray } from "@app/lib/fn";
|
import { chunkArray } from "@app/lib/fn";
|
||||||
import { logger } from "@app/lib/logger";
|
import { logger } from "@app/lib/logger";
|
||||||
@@ -12,7 +12,6 @@ import { alphaNumericNanoId } from "@app/lib/nanoid";
|
|||||||
|
|
||||||
import { TKmsServiceFactory } from "../kms/kms-service";
|
import { TKmsServiceFactory } from "../kms/kms-service";
|
||||||
import { KmsDataKey } from "../kms/kms-types";
|
import { KmsDataKey } from "../kms/kms-types";
|
||||||
import { TOrgServiceFactory } from "../org/org-service";
|
|
||||||
import { TProjectDALFactory } from "../project/project-dal";
|
import { TProjectDALFactory } from "../project/project-dal";
|
||||||
import { TProjectServiceFactory } from "../project/project-service";
|
import { TProjectServiceFactory } from "../project/project-service";
|
||||||
import { TProjectEnvDALFactory } from "../project-env/project-env-dal";
|
import { TProjectEnvDALFactory } from "../project-env/project-env-dal";
|
||||||
@@ -38,7 +37,6 @@ export type TImportDataIntoInfisicalDTO = {
|
|||||||
|
|
||||||
folderDAL: Pick<TSecretFolderDALFactory, "create" | "findBySecretPath">;
|
folderDAL: Pick<TSecretFolderDALFactory, "create" | "findBySecretPath">;
|
||||||
projectService: Pick<TProjectServiceFactory, "createProject">;
|
projectService: Pick<TProjectServiceFactory, "createProject">;
|
||||||
orgService: Pick<TOrgServiceFactory, "inviteUserToOrganization">;
|
|
||||||
projectEnvService: Pick<TProjectEnvServiceFactory, "createEnvironment">;
|
projectEnvService: Pick<TProjectEnvServiceFactory, "createEnvironment">;
|
||||||
secretV2BridgeService: Pick<TSecretV2BridgeServiceFactory, "createManySecret">;
|
secretV2BridgeService: Pick<TSecretV2BridgeServiceFactory, "createManySecret">;
|
||||||
|
|
||||||
@@ -113,7 +111,6 @@ export const importDataIntoInfisicalFn = async ({
|
|||||||
projectService,
|
projectService,
|
||||||
projectEnvDAL,
|
projectEnvDAL,
|
||||||
projectDAL,
|
projectDAL,
|
||||||
orgService,
|
|
||||||
secretDAL,
|
secretDAL,
|
||||||
kmsService,
|
kmsService,
|
||||||
secretVersionDAL,
|
secretVersionDAL,
|
||||||
@@ -150,26 +147,6 @@ export const importDataIntoInfisicalFn = async ({
|
|||||||
originalToNewProjectId.set(project.id, newProject.id);
|
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
|
// Import environments
|
||||||
if (data.environments) {
|
if (data.environments) {
|
||||||
for await (const environment of data.environments) {
|
for await (const environment of data.environments) {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import { logger } from "@app/lib/logger";
|
|||||||
import { QueueJobs, QueueName, TQueueServiceFactory } from "@app/queue";
|
import { QueueJobs, QueueName, TQueueServiceFactory } from "@app/queue";
|
||||||
|
|
||||||
import { TKmsServiceFactory } from "../kms/kms-service";
|
import { TKmsServiceFactory } from "../kms/kms-service";
|
||||||
import { TOrgServiceFactory } from "../org/org-service";
|
|
||||||
import { TProjectDALFactory } from "../project/project-dal";
|
import { TProjectDALFactory } from "../project/project-dal";
|
||||||
import { TProjectServiceFactory } from "../project/project-service";
|
import { TProjectServiceFactory } from "../project/project-service";
|
||||||
import { TProjectEnvDALFactory } from "../project-env/project-env-dal";
|
import { TProjectEnvDALFactory } from "../project-env/project-env-dal";
|
||||||
@@ -34,7 +33,6 @@ export type TExternalMigrationQueueFactoryDep = {
|
|||||||
|
|
||||||
folderDAL: Pick<TSecretFolderDALFactory, "create" | "findBySecretPath">;
|
folderDAL: Pick<TSecretFolderDALFactory, "create" | "findBySecretPath">;
|
||||||
projectService: Pick<TProjectServiceFactory, "createProject">;
|
projectService: Pick<TProjectServiceFactory, "createProject">;
|
||||||
orgService: Pick<TOrgServiceFactory, "inviteUserToOrganization">;
|
|
||||||
projectEnvService: Pick<TProjectEnvServiceFactory, "createEnvironment">;
|
projectEnvService: Pick<TProjectEnvServiceFactory, "createEnvironment">;
|
||||||
secretV2BridgeService: Pick<TSecretV2BridgeServiceFactory, "createManySecret">;
|
secretV2BridgeService: Pick<TSecretV2BridgeServiceFactory, "createManySecret">;
|
||||||
};
|
};
|
||||||
@@ -44,7 +42,6 @@ export type TExternalMigrationQueueFactory = ReturnType<typeof externalMigration
|
|||||||
export const externalMigrationQueueFactory = ({
|
export const externalMigrationQueueFactory = ({
|
||||||
queueService,
|
queueService,
|
||||||
projectService,
|
projectService,
|
||||||
orgService,
|
|
||||||
smtpService,
|
smtpService,
|
||||||
projectDAL,
|
projectDAL,
|
||||||
projectEnvService,
|
projectEnvService,
|
||||||
@@ -111,7 +108,6 @@ export const externalMigrationQueueFactory = ({
|
|||||||
folderDAL,
|
folderDAL,
|
||||||
kmsService,
|
kmsService,
|
||||||
projectService,
|
projectService,
|
||||||
orgService,
|
|
||||||
projectEnvService,
|
projectEnvService,
|
||||||
secretV2BridgeService
|
secretV2BridgeService
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { ForbiddenError, MongoAbility } from "@casl/ability";
|
import { ForbiddenError } from "@casl/ability";
|
||||||
import slugify from "@sindresorhus/slugify";
|
import slugify from "@sindresorhus/slugify";
|
||||||
import { MongoQuery } from "@ucast/mongo2js";
|
|
||||||
import crypto from "crypto";
|
import crypto from "crypto";
|
||||||
import jwt from "jsonwebtoken";
|
import jwt from "jsonwebtoken";
|
||||||
import { Knex } from "knex";
|
import { Knex } from "knex";
|
||||||
@@ -20,11 +19,7 @@ import { TProjects } from "@app/db/schemas/projects";
|
|||||||
import { TGroupDALFactory } from "@app/ee/services/group/group-dal";
|
import { TGroupDALFactory } from "@app/ee/services/group/group-dal";
|
||||||
import { TLicenseServiceFactory } from "@app/ee/services/license/license-service";
|
import { TLicenseServiceFactory } from "@app/ee/services/license/license-service";
|
||||||
import { TOidcConfigDALFactory } from "@app/ee/services/oidc/oidc-config-dal";
|
import { TOidcConfigDALFactory } from "@app/ee/services/oidc/oidc-config-dal";
|
||||||
import {
|
import { OrgPermissionActions, OrgPermissionSubjects } from "@app/ee/services/permission/org-permission";
|
||||||
OrgPermissionActions,
|
|
||||||
OrgPermissionSet,
|
|
||||||
OrgPermissionSubjects
|
|
||||||
} from "@app/ee/services/permission/org-permission";
|
|
||||||
import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service";
|
import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service";
|
||||||
import { ProjectPermissionActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission";
|
import { ProjectPermissionActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission";
|
||||||
import { TProjectUserAdditionalPrivilegeDALFactory } from "@app/ee/services/project-user-additional-privilege/project-user-additional-privilege-dal";
|
import { TProjectUserAdditionalPrivilegeDALFactory } from "@app/ee/services/project-user-additional-privilege/project-user-additional-privilege-dal";
|
||||||
@@ -492,17 +487,11 @@ export const orgServiceFactory = ({
|
|||||||
organizationRoleSlug,
|
organizationRoleSlug,
|
||||||
projects: invitedProjects,
|
projects: invitedProjects,
|
||||||
actorAuthMethod,
|
actorAuthMethod,
|
||||||
actorOrgId,
|
actorOrgId
|
||||||
tx: trx,
|
|
||||||
verifyPermissions = true
|
|
||||||
}: TInviteUserToOrgDTO) => {
|
}: TInviteUserToOrgDTO) => {
|
||||||
const appCfg = getConfig();
|
const appCfg = getConfig();
|
||||||
|
|
||||||
let permission: MongoAbility<OrgPermissionSet, MongoQuery> | undefined;
|
const { permission } = await permissionService.getOrgPermission(actor, actorId, orgId, actorAuthMethod, actorOrgId);
|
||||||
if (verifyPermissions) {
|
|
||||||
permission = (await permissionService.getOrgPermission(actor, actorId, orgId, actorAuthMethod, actorOrgId))
|
|
||||||
.permission;
|
|
||||||
}
|
|
||||||
|
|
||||||
const org = await orgDAL.findOrgById(orgId);
|
const org = await orgDAL.findOrgById(orgId);
|
||||||
|
|
||||||
@@ -523,15 +512,12 @@ export const orgServiceFactory = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const projectsToInvite = invitedProjects?.length
|
const projectsToInvite = invitedProjects?.length
|
||||||
? await projectDAL.find(
|
? await projectDAL.find({
|
||||||
{
|
orgId,
|
||||||
orgId,
|
$in: {
|
||||||
$in: {
|
id: invitedProjects?.map(({ id }) => id)
|
||||||
id: invitedProjects?.map(({ id }) => id)
|
}
|
||||||
}
|
})
|
||||||
},
|
|
||||||
{ tx: trx }
|
|
||||||
)
|
|
||||||
: [];
|
: [];
|
||||||
if (projectsToInvite.length !== invitedProjects?.length) {
|
if (projectsToInvite.length !== invitedProjects?.length) {
|
||||||
throw new ForbiddenRequestError({
|
throw new ForbiddenRequestError({
|
||||||
@@ -548,7 +534,7 @@ export const orgServiceFactory = ({
|
|||||||
const mailsForOrgInvitation: { email: string; userId: string; firstName: string; lastName: string }[] = [];
|
const mailsForOrgInvitation: { email: string; userId: string; firstName: string; lastName: string }[] = [];
|
||||||
const mailsForProjectInvitation: { email: string[]; projectName: string }[] = [];
|
const mailsForProjectInvitation: { email: string[]; projectName: string }[] = [];
|
||||||
const newProjectMemberships: TProjectMemberships[] = [];
|
const newProjectMemberships: TProjectMemberships[] = [];
|
||||||
await (trx || orgDAL).transaction(async (tx) => {
|
await orgDAL.transaction(async (tx) => {
|
||||||
const users: Pick<TUsers, "id" | "firstName" | "lastName" | "email" | "username">[] = [];
|
const users: Pick<TUsers, "id" | "firstName" | "lastName" | "email" | "username">[] = [];
|
||||||
|
|
||||||
for await (const inviteeEmail of inviteeEmails) {
|
for await (const inviteeEmail of inviteeEmails) {
|
||||||
@@ -634,16 +620,8 @@ export const orgServiceFactory = ({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verifyPermissions) {
|
// as its used by project invite also
|
||||||
if (!permission) {
|
ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Create, OrgPermissionSubjects.Member);
|
||||||
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);
|
|
||||||
}
|
|
||||||
let roleId;
|
let roleId;
|
||||||
const orgRole = isCustomOrgRole ? OrgMembershipRole.Custom : organizationRoleSlug;
|
const orgRole = isCustomOrgRole ? OrgMembershipRole.Custom : organizationRoleSlug;
|
||||||
if (isCustomOrgRole) {
|
if (isCustomOrgRole) {
|
||||||
@@ -684,19 +662,17 @@ export const orgServiceFactory = ({
|
|||||||
// if there exist no project membership we set is as given by the request
|
// if there exist no project membership we set is as given by the request
|
||||||
for await (const project of projectsToInvite) {
|
for await (const project of projectsToInvite) {
|
||||||
const projectId = project.id;
|
const projectId = project.id;
|
||||||
if (verifyPermissions) {
|
const { permission: projectPermission } = await permissionService.getProjectPermission(
|
||||||
const { permission: projectPermission } = await permissionService.getProjectPermission(
|
actor,
|
||||||
actor,
|
actorId,
|
||||||
actorId,
|
projectId,
|
||||||
projectId,
|
actorAuthMethod,
|
||||||
actorAuthMethod,
|
actorOrgId
|
||||||
actorOrgId
|
);
|
||||||
);
|
ForbiddenError.from(projectPermission).throwUnlessCan(
|
||||||
ForbiddenError.from(projectPermission).throwUnlessCan(
|
ProjectPermissionActions.Create,
|
||||||
ProjectPermissionActions.Create,
|
ProjectPermissionSub.Member
|
||||||
ProjectPermissionSub.Member
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
const existingMembers = await projectMembershipDAL.find(
|
const existingMembers = await projectMembershipDAL.find(
|
||||||
{
|
{
|
||||||
projectId: project.id,
|
projectId: project.id,
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { Knex } from "knex";
|
|
||||||
|
|
||||||
import { TOrgPermission } from "@app/lib/types";
|
import { TOrgPermission } from "@app/lib/types";
|
||||||
|
|
||||||
import { ActorAuthMethod, ActorType } from "../auth/auth-type";
|
import { ActorAuthMethod, ActorType } from "../auth/auth-type";
|
||||||
@@ -30,8 +28,6 @@ export type TDeleteOrgMembershipDTO = {
|
|||||||
export type TInviteUserToOrgDTO = {
|
export type TInviteUserToOrgDTO = {
|
||||||
inviteeEmails: string[];
|
inviteeEmails: string[];
|
||||||
organizationRoleSlug: string;
|
organizationRoleSlug: string;
|
||||||
tx?: Knex;
|
|
||||||
verifyPermissions?: boolean;
|
|
||||||
projects?: {
|
projects?: {
|
||||||
id: string;
|
id: string;
|
||||||
projectRoleSlug?: string[];
|
projectRoleSlug?: string[];
|
||||||
|
|||||||
@@ -39,8 +39,7 @@ export const projectEnvServiceFactory = ({
|
|||||||
actorAuthMethod,
|
actorAuthMethod,
|
||||||
position,
|
position,
|
||||||
name,
|
name,
|
||||||
slug,
|
slug
|
||||||
tx: trx
|
|
||||||
}: TCreateEnvDTO) => {
|
}: TCreateEnvDTO) => {
|
||||||
const { permission } = await permissionService.getProjectPermission(
|
const { permission } = await permissionService.getProjectPermission(
|
||||||
actor,
|
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) {
|
if (position !== undefined) {
|
||||||
// Check if there's an environment at the specified position
|
// Check if there's an environment at the specified position
|
||||||
const existingEnvWithPosition = await projectEnvDAL.findOne({ projectId, position }, tx);
|
const existingEnvWithPosition = await projectEnvDAL.findOne({ projectId, position }, tx);
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
import { Knex } from "knex";
|
|
||||||
|
|
||||||
import { TProjectPermission } from "@app/lib/types";
|
import { TProjectPermission } from "@app/lib/types";
|
||||||
|
|
||||||
export type TCreateEnvDTO = {
|
export type TCreateEnvDTO = {
|
||||||
name: string;
|
name: string;
|
||||||
slug: string;
|
slug: string;
|
||||||
position?: number;
|
position?: number;
|
||||||
tx?: Knex;
|
|
||||||
} & TProjectPermission;
|
} & TProjectPermission;
|
||||||
|
|
||||||
export type TUpdateEnvDTO = {
|
export type TUpdateEnvDTO = {
|
||||||
|
|||||||
@@ -911,8 +911,7 @@ export const secretV2BridgeServiceFactory = ({
|
|||||||
actorOrgId,
|
actorOrgId,
|
||||||
environment,
|
environment,
|
||||||
projectId,
|
projectId,
|
||||||
secrets: inputSecrets,
|
secrets: inputSecrets
|
||||||
tx: trx
|
|
||||||
}: TCreateManySecretDTO) => {
|
}: TCreateManySecretDTO) => {
|
||||||
const { permission } = await permissionService.getProjectPermission(
|
const { permission } = await permissionService.getProjectPermission(
|
||||||
actor,
|
actor,
|
||||||
@@ -952,7 +951,7 @@ export const secretV2BridgeServiceFactory = ({
|
|||||||
const { encryptor: secretManagerEncryptor, decryptor: secretManagerDecryptor } =
|
const { encryptor: secretManagerEncryptor, decryptor: secretManagerDecryptor } =
|
||||||
await kmsService.createCipherPairWithDataKey({ type: KmsDataKey.SecretManager, projectId });
|
await kmsService.createCipherPairWithDataKey({ type: KmsDataKey.SecretManager, projectId });
|
||||||
|
|
||||||
const newSecrets = await (trx || secretDAL).transaction(async (tx) =>
|
const newSecrets = await secretDAL.transaction(async (tx) =>
|
||||||
fnSecretBulkInsert({
|
fnSecretBulkInsert({
|
||||||
inputSecrets: inputSecrets.map((el) => {
|
inputSecrets: inputSecrets.map((el) => {
|
||||||
const references = getAllNestedSecretReferences(el.secretValue);
|
const references = getAllNestedSecretReferences(el.secretValue);
|
||||||
|
|||||||
@@ -81,7 +81,6 @@ export type TCreateManySecretDTO = Omit<TProjectPermission, "projectId"> & {
|
|||||||
secretPath: string;
|
secretPath: string;
|
||||||
projectId: string;
|
projectId: string;
|
||||||
environment: string;
|
environment: string;
|
||||||
tx?: Knex;
|
|
||||||
secrets: {
|
secrets: {
|
||||||
secretKey: string;
|
secretKey: string;
|
||||||
secretValue: string;
|
secretValue: string;
|
||||||
|
|||||||
Reference in New Issue
Block a user