From d948923d9539909455634d7cb5d149fa7cca080e Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 27 Feb 2023 16:32:13 -0500 Subject: [PATCH] add typescript types to secret versions --- .../src/controllers/v2/secretsController.ts | 70 +++++++++---------- backend/src/helpers/secret.ts | 4 +- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/backend/src/controllers/v2/secretsController.ts b/backend/src/controllers/v2/secretsController.ts index c42dcb28b..29939a1cd 100644 --- a/backend/src/controllers/v2/secretsController.ts +++ b/backend/src/controllers/v2/secretsController.ts @@ -22,7 +22,7 @@ import { userHasNoAbility, userHasWorkspaceAccess, userHasWriteOnlyAbility } fro import Tag from '../../models/tag'; import _ from 'lodash'; import { - BatchSecretRequest, + BatchSecretRequest, BatchSecret } from '../../types/secret'; @@ -41,13 +41,13 @@ export const batchSecrets = async (req: Request, res: Response) => { workspaceId: string; environment: string; requests: BatchSecretRequest[]; - }= req.body; - + } = req.body; + const createSecrets: BatchSecret[] = []; const updateSecrets: BatchSecret[] = []; const deleteSecrets: Types.ObjectId[] = []; const actions: IAction[] = []; - + requests.forEach((request) => { switch (request.method) { case 'POST': @@ -70,7 +70,7 @@ export const batchSecrets = async (req: Request, res: Response) => { break; } }); - + // handle create secrets let createdSecrets: ISecret[] = []; if (createSecrets.length > 0) { @@ -109,18 +109,18 @@ export const batchSecrets = async (req: Request, res: Response) => { }); } } - + // handle update secrets let updatedSecrets: ISecret[] = []; if (updateSecrets.length > 0 && req.secrets) { // construct object containing all secrets let listedSecretsObj: { - [key: string]: { + [key: string]: { version: number; type: string; } } = {}; - + listedSecretsObj = req.secrets.reduce((obj: any, secret: ISecret) => ({ ...obj, [secret._id.toString()]: secret @@ -140,7 +140,7 @@ export const batchSecrets = async (req: Request, res: Response) => { })); await Secret.bulkWrite(updateOperations); - + const secretVersions = updateSecrets.map((u) => ({ secret: new Types.ObjectId(u._id), version: listedSecretsObj[u._id.toString()].version, @@ -227,7 +227,7 @@ export const batchSecrets = async (req: Request, res: Response) => { }); } } - + if (actions.length > 0) { // (EE) create (audit) log await EELogService.createLog({ @@ -250,7 +250,7 @@ export const batchSecrets = async (req: Request, res: Response) => { await EESecretService.takeSecretSnapshot({ workspaceId }); - + const resObj: { [key: string]: ISecret[] | string[] } = {} if (createSecrets.length > 0) { @@ -260,11 +260,11 @@ export const batchSecrets = async (req: Request, res: Response) => { if (updateSecrets.length > 0) { resObj['updatedSecrets'] = updatedSecrets; } - + if (deleteSecrets.length > 0) { resObj['deletedSecrets'] = deleteSecrets.map((d) => d.toString()); } - + return res.status(200).send(resObj); } @@ -358,9 +358,25 @@ export const createSecrets = async (req: Request, res: Response) => { tags: string[] } - const newlyCreatedSecrets = await Secret.insertMany( - listOfSecretsToCreate.map(({ + const secretsToInsert: ISecret[] = listOfSecretsToCreate.map(({ + type, + secretKeyCiphertext, + secretKeyIV, + secretKeyTag, + secretValueCiphertext, + secretValueIV, + secretValueTag, + secretCommentCiphertext, + secretCommentIV, + secretCommentTag, + tags + }: secretsToCreateType) => { + return ({ + version: 1, + workspace: new Types.ObjectId(workspaceId), type, + user: type === SECRET_PERSONAL ? req.user : undefined, + environment, secretKeyCiphertext, secretKeyIV, secretKeyTag, @@ -371,26 +387,10 @@ export const createSecrets = async (req: Request, res: Response) => { secretCommentIV, secretCommentTag, tags - }: secretsToCreateType) => { - return ({ - version: 1, - workspace: new Types.ObjectId(workspaceId), - type, - user: type === SECRET_PERSONAL ? req.user : undefined, - environment, - secretKeyCiphertext, - secretKeyIV, - secretKeyTag, - secretValueCiphertext, - secretValueIV, - secretValueTag, - secretCommentCiphertext, - secretCommentIV, - secretCommentTag, - tags - }); - }) - ); + }); + }) + + const newlyCreatedSecrets: ISecret[] = (await Secret.insertMany(secretsToInsert)).map((insertedSecret) => insertedSecret.toObject()); setTimeout(async () => { // trigger event - push secrets diff --git a/backend/src/helpers/secret.ts b/backend/src/helpers/secret.ts index 9466cf7aa..c0f57f3ef 100644 --- a/backend/src/helpers/secret.ts +++ b/backend/src/helpers/secret.ts @@ -267,7 +267,7 @@ const v1PushSecrets = async ({ if (toAdd.length > 0) { // add secrets - const newSecrets = await Secret.insertMany( + const newSecrets: ISecret[] = (await Secret.insertMany( toAdd.map((s, idx) => { const obj: any = { version: 1, @@ -294,7 +294,7 @@ const v1PushSecrets = async ({ return obj; }) - ); + )).map((insertedSecret) => insertedSecret.toObject()); // (EE) add secret versions for new secrets EESecretService.addSecretVersions({