| 8 | |
| 9 | // remove all secret items when user reset vault key |
| 10 | export const removeAllSecrets = async (organizationIds: string[]) => { |
| 11 | const allProjects = await db.find<Project>(models.project.type, { |
| 12 | parentId: { $in: organizationIds }, |
| 13 | }); |
| 14 | const allProjectIds = allProjects.map(project => project._id); |
| 15 | const allGlobalEnvironmentWorkspaces = await db.find<Workspace>(models.workspace.type, { |
| 16 | parentId: { $in: allProjectIds }, |
| 17 | scope: models.workspace.WorkspaceScopeKeys.environment, |
| 18 | }); |
| 19 | const allGlobalBaseEnvironments = await db.find<Environment>(type, { |
| 20 | parentId: { |
| 21 | $in: allGlobalEnvironmentWorkspaces.map(w => w._id), |
| 22 | }, |
| 23 | }); |
| 24 | const allGlobalSubEnvironments = await db.find<Environment>(type, { |
| 25 | parentId: { |
| 26 | $in: allGlobalBaseEnvironments.map(e => e._id), |
| 27 | }, |
| 28 | }); |
| 29 | const allGlobalEnvironments = allGlobalBaseEnvironments.concat(allGlobalSubEnvironments); |
| 30 | const allGlobalPrivateEnvironments = allGlobalEnvironments.filter(env => env.isPrivate); |
| 31 | allGlobalPrivateEnvironments.forEach(async privateEnv => { |
| 32 | const { kvPairData, data } = privateEnv; |
| 33 | if (vaultEnvironmentPath in data) { |
| 34 | const { [vaultEnvironmentPath]: secretData, ...restData } = data; |
| 35 | const filteredKvPairData = kvPairData?.filter(kvPair => kvPair.type !== EnvironmentKvPairDataType.SECRET); |
| 36 | await update(privateEnv, { data: restData, kvPairData: filteredKvPairData }); |
| 37 | } |
| 38 | }); |
| 39 | }; |
| 40 | |
| 41 | export function create(patch: Partial<Environment> = {}) { |
| 42 | if (!patch.parentId) { |