From 5a11d563bcbaf634ceeaf0ae137a5304571cb1cc Mon Sep 17 00:00:00 2001 From: HannesOberreiter Date: Wed, 5 Jun 2024 10:28:24 +0200 Subject: [PATCH] feat: :sparkles: add user create event --- server/api/helpers/users/create-one.js | 17 +++++++++++++++++ server/api/helpers/users/delete-one.js | 7 +++++++ server/api/helpers/users/update-one.js | 7 +++++++ server/api/helpers/utils/send-webhook.js | 11 +++++++---- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/server/api/helpers/users/create-one.js b/server/api/helpers/users/create-one.js index ddd07b9..87f3686 100644 --- a/server/api/helpers/users/create-one.js +++ b/server/api/helpers/users/create-one.js @@ -84,6 +84,23 @@ module.exports = { ); }); + /* The user could be created manually by an user or via OIDC. We hijack the id field, so one can differentiate between the two on the webhook side. */ + let initiator; + if (inputs.request && inputs.request.currentUser) { + initiator = inputs.request.currentUser; + } else { + initiator = { + id: 'oidc', + }; + } + + await sails.helpers.utils.sendWebhook.with({ + event: 'USER_CREATE', + data: { ...user, password: undefined }, + projectId: '', + user: initiator, + }); + return user; }, }; diff --git a/server/api/helpers/users/delete-one.js b/server/api/helpers/users/delete-one.js index 6e2e6a5..524db4b 100644 --- a/server/api/helpers/users/delete-one.js +++ b/server/api/helpers/users/delete-one.js @@ -59,6 +59,13 @@ module.exports = { inputs.request, ); }); + + await sails.helpers.utils.sendWebhook.with({ + event: 'USER_DELETE', + data: { ...user, password: undefined }, + projectId: '', + user: inputs.request.currentUser, + }); } return user; diff --git a/server/api/helpers/users/update-one.js b/server/api/helpers/users/update-one.js index 553cdf5..a829b43 100644 --- a/server/api/helpers/users/update-one.js +++ b/server/api/helpers/users/update-one.js @@ -154,6 +154,13 @@ module.exports = { ); }); } + + await sails.helpers.utils.sendWebhook.with({ + event: 'USER_UPDATE', + data: { ...user, password: undefined }, + projectId: '', + user: inputs.request.currentUser, + }); } return user; diff --git a/server/api/helpers/utils/send-webhook.js b/server/api/helpers/utils/send-webhook.js index 2698560..92e4e88 100644 --- a/server/api/helpers/utils/send-webhook.js +++ b/server/api/helpers/utils/send-webhook.js @@ -26,6 +26,10 @@ const EVENT_TYPES = { TASK_CREATE: 'task_create', TASK_UPDATE: 'task_update', TASK_DELETE: 'task_delete', + + USER_CREATE: 'user_create', + USER_UPDATE: 'user_update', + USER_DELETE: 'user_delete', }; /** @@ -53,9 +57,8 @@ async function sendWebhook(inputs) { const body = JSON.stringify({ ...inputs, user: { - id: inputs.user.id, - fullName: inputs.user.fullName, - email: inputs.user.email, + ...inputs.user, + password: undefined, }, }); @@ -83,7 +86,7 @@ module.exports = { }, projectId: { type: 'string', - required: true, + default: '', }, user: { type: 'ref',