From b4cec38ee815ed5272a1f06779bdf08122fbab79 Mon Sep 17 00:00:00 2001 From: Omar Ajoue Date: Wed, 16 Nov 2022 14:13:36 +0100 Subject: [PATCH] fix: Add missing content type to controllers (no-changelog) (#4617) * fix: add missing content type to controllers * refactor: use ResponseHelper instead of fixing content type * fix: remove res.send calls --- .../credentials/credentials.controller.ee.ts | 90 ++++++++++--------- .../src/workflows/workflows.controller.ee.ts | 66 +++++++------- 2 files changed, 82 insertions(+), 74 deletions(-) diff --git a/packages/cli/src/credentials/credentials.controller.ee.ts b/packages/cli/src/credentials/credentials.controller.ee.ts index 18d6289f13..93eddb8998 100644 --- a/packages/cli/src/credentials/credentials.controller.ee.ts +++ b/packages/cli/src/credentials/credentials.controller.ee.ts @@ -134,50 +134,54 @@ EECredentialsController.post( * Grant or remove users' access to a credential. */ -EECredentialsController.put('/:credentialId/share', async (req: CredentialRequest.Share, res) => { - const { credentialId } = req.params; - const { shareWithIds } = req.body; +EECredentialsController.put( + '/:credentialId/share', + ResponseHelper.send(async (req: CredentialRequest.Share) => { + const { credentialId } = req.params; + const { shareWithIds } = req.body; - if (!Array.isArray(shareWithIds) || !shareWithIds.every((userId) => typeof userId === 'string')) { - return res.status(400).send('Bad Request'); - } - - const { ownsCredential, credential } = await EECredentials.isOwned(req.user, credentialId); - - if (!ownsCredential || !credential) { - return res.status(403).send(); - } - - let amountRemoved: number | null = null; - let newShareeIds: string[] = []; - await Db.transaction(async (trx) => { - // remove all sharings that are not supposed to exist anymore - const { affected } = await EECredentials.pruneSharings(trx, credentialId, [ - req.user.id, - ...shareWithIds, - ]); - if (affected) amountRemoved = affected; - - const sharings = await EECredentials.getSharings(trx, credentialId); - - // extract the new sharings that need to be added - newShareeIds = rightDiff( - [sharings, (sharing) => sharing.userId], - [shareWithIds, (shareeId) => shareeId], - ); - - if (newShareeIds.length) { - await EECredentials.share(trx, credential, newShareeIds); + if ( + !Array.isArray(shareWithIds) || + !shareWithIds.every((userId) => typeof userId === 'string') + ) { + throw new ResponseHelper.ResponseError('Bad request', undefined, 400); } - }); - void InternalHooksManager.getInstance().onUserSharedCredentials({ - credential_type: credential.type, - credential_id: credential.id.toString(), - user_id_sharer: req.user.id, - user_ids_sharees_added: newShareeIds, - sharees_removed: amountRemoved, - }); + const { ownsCredential, credential } = await EECredentials.isOwned(req.user, credentialId); - return res.status(200).send(); -}); + if (!ownsCredential || !credential) { + throw new ResponseHelper.ResponseError('Forbidden', undefined, 403); + } + + let amountRemoved: number | null = null; + let newShareeIds: string[] = []; + await Db.transaction(async (trx) => { + // remove all sharings that are not supposed to exist anymore + const { affected } = await EECredentials.pruneSharings(trx, credentialId, [ + req.user.id, + ...shareWithIds, + ]); + if (affected) amountRemoved = affected; + + const sharings = await EECredentials.getSharings(trx, credentialId); + + // extract the new sharings that need to be added + newShareeIds = rightDiff( + [sharings, (sharing) => sharing.userId], + [shareWithIds, (shareeId) => shareeId], + ); + + if (newShareeIds.length) { + await EECredentials.share(trx, credential, newShareeIds); + } + }); + + void InternalHooksManager.getInstance().onUserSharedCredentials({ + credential_type: credential.type, + credential_id: credential.id.toString(), + user_id_sharer: req.user.id, + user_ids_sharees_added: newShareeIds, + sharees_removed: amountRemoved, + }); + }), +); diff --git a/packages/cli/src/workflows/workflows.controller.ee.ts b/packages/cli/src/workflows/workflows.controller.ee.ts index 4735e389fe..d7125c6229 100644 --- a/packages/cli/src/workflows/workflows.controller.ee.ts +++ b/packages/cli/src/workflows/workflows.controller.ee.ts @@ -37,40 +37,44 @@ EEWorkflowController.use((req, res, next) => { * Grant or remove users' access to a workflow. */ -EEWorkflowController.put('/:workflowId/share', async (req: WorkflowRequest.Share, res) => { - const { workflowId } = req.params; - const { shareWithIds } = req.body; +EEWorkflowController.put( + '/:workflowId/share', + ResponseHelper.send(async (req: WorkflowRequest.Share) => { + const { workflowId } = req.params; + const { shareWithIds } = req.body; - if (!Array.isArray(shareWithIds) || !shareWithIds.every((userId) => typeof userId === 'string')) { - return res.status(400).send('Bad Request'); - } - - const { ownsWorkflow, workflow } = await EEWorkflows.isOwned(req.user, workflowId); - - if (!ownsWorkflow || !workflow) { - return res.status(403).send(); - } - - let newShareeIds: string[] = []; - await Db.transaction(async (trx) => { - // remove all sharings that are not supposed to exist anymore - await EEWorkflows.pruneSharings(trx, workflowId, [req.user.id, ...shareWithIds]); - - const sharings = await EEWorkflows.getSharings(trx, workflowId); - - // extract the new sharings that need to be added - newShareeIds = rightDiff( - [sharings, (sharing) => sharing.userId], - [shareWithIds, (shareeId) => shareeId], - ); - - if (newShareeIds.length) { - await EEWorkflows.share(trx, workflow, newShareeIds); + if ( + !Array.isArray(shareWithIds) || + !shareWithIds.every((userId) => typeof userId === 'string') + ) { + throw new ResponseHelper.ResponseError('Bad request', undefined, 400); } - }); - return res.status(200).send(); -}); + const { ownsWorkflow, workflow } = await EEWorkflows.isOwned(req.user, workflowId); + + if (!ownsWorkflow || !workflow) { + throw new ResponseHelper.ResponseError('Forbidden', undefined, 403); + } + + let newShareeIds: string[] = []; + await Db.transaction(async (trx) => { + // remove all sharings that are not supposed to exist anymore + await EEWorkflows.pruneSharings(trx, workflowId, [req.user.id, ...shareWithIds]); + + const sharings = await EEWorkflows.getSharings(trx, workflowId); + + // extract the new sharings that need to be added + newShareeIds = rightDiff( + [sharings, (sharing) => sharing.userId], + [shareWithIds, (shareeId) => shareeId], + ); + + if (newShareeIds.length) { + await EEWorkflows.share(trx, workflow, newShareeIds); + } + }); + }), +); EEWorkflowController.get( '/:id(\\d+)',