diff --git a/backend/src/controllers/v3/secretsController.ts b/backend/src/controllers/v3/secretsController.ts index d4f8f4674..8318742f0 100644 --- a/backend/src/controllers/v3/secretsController.ts +++ b/backend/src/controllers/v3/secretsController.ts @@ -362,14 +362,7 @@ export const createSecretRaw = async (req: Request, res: Response) => { export const updateSecretByNameRaw = async (req: Request, res: Response) => { const { params: { secretName }, - body: { - secretValue, - environment, - secretPath, - type, - workspaceId, - skipMultilineEncoding, - } + body: { secretValue, environment, secretPath, type, workspaceId, skipMultilineEncoding } } = await validateRequest(reqValidator.UpdateSecretByNameRawV3, req); await checkSecretsPermission({ @@ -696,7 +689,7 @@ export const updateSecretByName = async (req: Request, res: Response) => { secretKeyCiphertext, skipMultilineEncoding, secretReminderCron, - secretReminderNote, + secretReminderNote }, params: { secretName } } = await validateRequest(reqValidator.UpdateSecretByNameV3, req); @@ -716,7 +709,6 @@ export const updateSecretByName = async (req: Request, res: Response) => { if (membership && type !== "personal") { const secretApprovalPolicy = await getSecretPolicyOfBoard(workspaceId, environment, secretPath); if (secretApprovalPolicy) { - // ? QUESTION // ? Here we could also expand upon the reminders feature, by adding it to the approval process. const secretApprovalRequest = await generateSecretApprovalRequest({ @@ -750,7 +742,7 @@ export const updateSecretByName = async (req: Request, res: Response) => { } } - if(type !== "personal") { + if (type !== "personal") { const existingSecret = await SecretService.getSecret({ secretName, workspaceId: new Types.ObjectId(workspaceId), @@ -760,22 +752,28 @@ export const updateSecretByName = async (req: Request, res: Response) => { authData: req.authData }); - if((secretReminderCron && existingSecret.secretReminderCron !== secretReminderCron) || (secretReminderNote && existingSecret.secretReminderNote !== secretReminderNote)) { + if ( + (secretReminderCron && existingSecret.secretReminderCron !== secretReminderCron) || + (secretReminderNote && existingSecret.secretReminderNote !== secretReminderNote) + ) { await createReminder(existingSecret, { _id: existingSecret._id, secretReminderCron, secretReminderNote, - workspace: existingSecret.workspace, - }) - } else if(secretReminderCron === null && secretReminderNote === null && existingSecret.secretReminderCron) { + workspace: existingSecret.workspace + }); + } else if ( + secretReminderCron === null && + secretReminderNote === null && + existingSecret.secretReminderCron + ) { await deleteReminder({ _id: existingSecret._id, - secretReminderCron: existingSecret.secretReminderCron, - }) + secretReminderCron: existingSecret.secretReminderCron + }); } } - - + const secret = await SecretService.updateSecret({ secretName, workspaceId: new Types.ObjectId(workspaceId), diff --git a/backend/src/helpers/reminder.ts b/backend/src/helpers/reminder.ts index ba4cb9fed..aebb8cbd4 100644 --- a/backend/src/helpers/reminder.ts +++ b/backend/src/helpers/reminder.ts @@ -1,33 +1,36 @@ +import { ISecret } from "../models"; +import { + createSecretReminderCron, + deleteSecretReminderCron, + updateSecretReminderCron +} from "../queues/reminders/sendSecretReminders"; -import { ISecret } from "../models" -import { createSecretReminderCron, deleteSecretReminderCron, updateSecretReminderCron } from "../queues/reminders/sendSecretReminders" - - -type TPartialSecret = Pick -type TPartialSecretDeleteReminder = Pick - - +type TPartialSecret = Pick< + ISecret, + "_id" | "secretReminderCron" | "secretReminderNote" | "workspace" +>; +type TPartialSecretDeleteReminder = Pick; export const createReminder = async (oldSecret: TPartialSecret, newSecret: TPartialSecret) => { - if(oldSecret._id !== newSecret._id) { - throw new Error("Secret id's don't match") + if (oldSecret._id !== newSecret._id) { + throw new Error("Secret id's don't match"); } - if(!newSecret.secretReminderCron) { - throw new Error("No cron provided") + if (!newSecret.secretReminderCron) { + throw new Error("No cron provided"); } - const secretId = oldSecret._id.toString() - const workspaceId = oldSecret.workspace.toString() + const secretId = oldSecret._id.toString(); + const workspaceId = oldSecret.workspace.toString(); - if(oldSecret.secretReminderCron) { + if (oldSecret.secretReminderCron) { // This will first delete the existing cron job, and then create a new one. await updateSecretReminderCron({ workspaceId, secretId, cron: newSecret.secretReminderCron, note: newSecret.secretReminderNote - }) + }); } else { // This will create a new cron job. await createSecretReminderCron({ @@ -35,21 +38,21 @@ export const createReminder = async (oldSecret: TPartialSecret, newSecret: TPart secretId, cron: newSecret.secretReminderCron, note: newSecret.secretReminderNote - }) + }); } -} +}; export const deleteReminder = async (secret: TPartialSecretDeleteReminder) => { - if(!secret._id) { - throw new Error("No secret id provided") + if (!secret._id) { + throw new Error("No secret id provided"); } - if(!secret.secretReminderCron) { - throw new Error("No cron provided") + if (!secret.secretReminderCron) { + throw new Error("No cron provided"); } await deleteSecretReminderCron({ secretId: secret._id.toString(), - cron: secret.secretReminderCron, - }) -} \ No newline at end of file + cron: secret.secretReminderCron + }); +};