From 3f0600fed70512f87dc20fe039695d1681a73d39 Mon Sep 17 00:00:00 2001 From: "Sam X. Chen" Date: Sat, 17 Aug 2019 19:17:57 -0400 Subject: Add Feature: enable two-way webhooks - stage one --- models/integrations.js | 18 ++++++++++++++---- models/settings.js | 1 + 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'models') diff --git a/models/integrations.js b/models/integrations.js index 0b2e08c6..0313c959 100644 --- a/models/integrations.js +++ b/models/integrations.js @@ -88,16 +88,26 @@ Integrations.attachSchema( }, }), ); - +Integrations.Const = { + GLOBAL_WEBHOOK_ID: '_global', + WEBHOOK_TYPES: ['outgoing-webhooks', 'bidirectional-webhooks'], +}; +const permissionHelper = { + allow(userId, doc) { + const user = Users.findOne(userId); + const isAdmin = user && Meteor.user().isAdmin; + return isAdmin || allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); + }, +}; Integrations.allow({ insert(userId, doc) { - return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); + return permissionHelper.allow(userId, doc); }, update(userId, doc) { - return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); + return permissionHelper.allow(userId, doc); }, remove(userId, doc) { - return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); + return permissionHelper.allow(userId, doc); }, fetch: ['boardId'], }); diff --git a/models/settings.js b/models/settings.js index 4a0359d5..80c2d8e0 100644 --- a/models/settings.js +++ b/models/settings.js @@ -147,6 +147,7 @@ if (Meteor.isServer) { }:${doc.mailServer.port}/`; } Accounts.emailTemplates.from = doc.mailServer.from; + console.log('Settings saved:', Accounts.emailTemplates); } }); -- cgit v1.2.3-1-g7c22 From dd0682328bc26bbe852fb19a85131e4017c547b0 Mon Sep 17 00:00:00 2001 From: "Sam X. Chen" Date: Thu, 29 Aug 2019 22:07:40 -0400 Subject: Add Feature: enable two-way webhooks - stage two --- models/activities.js | 23 +++++++++++++++++------ models/integrations.js | 6 +++++- models/settings.js | 1 - 3 files changed, 22 insertions(+), 8 deletions(-) (limited to 'models') diff --git a/models/activities.js b/models/activities.js index 3ecd5c8c..f64fce10 100644 --- a/models/activities.js +++ b/models/activities.js @@ -184,10 +184,11 @@ if (Meteor.isServer) { // it's person at himself, ignore it? continue; } - const user = Users.findOne(username) || Users.findOne({ username }); - const uid = user && user._id; + const atUser = + Users.findOne(username) || Users.findOne({ username }); + const uid = atUser && atUser._id; params.atUsername = username; - params.atEmails = user.emails; + params.atEmails = atUser.emails; if (board.hasMember(uid)) { title = 'act-atUserComment'; watchers = _.union(watchers, [uid]); @@ -268,13 +269,23 @@ if (Meteor.isServer) { }); const integrations = Integrations.find({ - boardId: board._id, - type: 'outgoing-webhooks', + boardId: { $in: [board._id, Integrations.Const.GLOBAL_WEBHOOK_ID] }, + // type: 'outgoing-webhooks', // all types enabled: true, activities: { $in: [description, 'all'] }, }).fetch(); if (integrations.length > 0) { - Meteor.call('outgoingWebhooks', integrations, description, params); + integrations.forEach(integration => { + Meteor.call( + 'outgoingWebhooks', + integration, + description, + params, + () => { + return; + }, + ); + }); } }); } diff --git a/models/integrations.js b/models/integrations.js index 0313c959..ce843680 100644 --- a/models/integrations.js +++ b/models/integrations.js @@ -90,7 +90,11 @@ Integrations.attachSchema( ); Integrations.Const = { GLOBAL_WEBHOOK_ID: '_global', - WEBHOOK_TYPES: ['outgoing-webhooks', 'bidirectional-webhooks'], + ONEWAY: 'outgoing-webhooks', + TWOWAY: 'bidirectional-webhooks', + get WEBHOOK_TYPES() { + return [this.ONEWAY, this.TWOWAY]; + }, }; const permissionHelper = { allow(userId, doc) { diff --git a/models/settings.js b/models/settings.js index 80c2d8e0..4a0359d5 100644 --- a/models/settings.js +++ b/models/settings.js @@ -147,7 +147,6 @@ if (Meteor.isServer) { }:${doc.mailServer.port}/`; } Accounts.emailTemplates.from = doc.mailServer.from; - console.log('Settings saved:', Accounts.emailTemplates); } }); -- cgit v1.2.3-1-g7c22