diff options
author | Lauri Ojansivu <x@xet7.org> | 2017-07-12 01:59:07 +0300 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2017-07-12 01:59:07 +0300 |
commit | 510708d0e1fc82dd9d0c707b198c41fed26aad15 (patch) | |
tree | c424e3ca9b2c80b017e2c160d10e3bbabd614a9c /models | |
parent | 19a71c0d9295b3d1e595ceb711eadca7bac3a868 (diff) | |
parent | 0e6cfdbb2a6f6710ca29516096a5b6efbf590276 (diff) | |
download | wekan-510708d0e1fc82dd9d0c707b198c41fed26aad15.tar.gz wekan-510708d0e1fc82dd9d0c707b198c41fed26aad15.tar.bz2 wekan-510708d0e1fc82dd9d0c707b198c41fed26aad15.zip |
Merge branch 'improve-notify' of https://github.com/nztqa/wekan into nztqa-improve-notify
Diffstat (limited to 'models')
-rw-r--r-- | models/activities.js | 5 | ||||
-rw-r--r-- | models/integrations.js | 54 |
2 files changed, 59 insertions, 0 deletions
diff --git a/models/activities.js b/models/activities.js index 9a41d4aa..f1e52493 100644 --- a/models/activities.js +++ b/models/activities.js @@ -131,5 +131,10 @@ if (Meteor.isServer) { Notifications.getUsers(participants, watchers).forEach((user) => { Notifications.notify(user, title, description, params); }); + + const integration = Integrations.findOne({ boardId: board._id, type: 'outgoing-webhooks', enabled: true }); + if (integration) { + Meteor.call('outgoingWebhooks', integration, description, params); + } }); } diff --git a/models/integrations.js b/models/integrations.js new file mode 100644 index 00000000..b9bf248f --- /dev/null +++ b/models/integrations.js @@ -0,0 +1,54 @@ +Integrations = new Mongo.Collection('integrations'); + +Integrations.attachSchema(new SimpleSchema({ + enabled: { + type: Boolean, + defaultValue: true, + }, + title: { + type: String, + optional: true, + }, + type: { + type: String, + }, + url: { // URL validation regex (https://mathiasbynens.be/demo/url-regex) + type: String, + }, + token: { + type: String, + optional: true, + }, + boardId: { + type: String, + }, + createdAt: { + type: Date, + denyUpdate: false, + autoValue() { // eslint-disable-line consistent-return + if (this.isInsert) { + return new Date(); + } else { + this.unset(); + } + }, + }, + userId: { + type: String, + autoValue() { // eslint-disable-line consistent-return + if (this.isInsert || this.isUpdate) { + return this.userId; + } + }, + }, +})); + +Integrations.allow({ + insert(userId, doc) { + return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); + }, + update(userId, doc) { + return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); + }, + fetch: ['boardId'], +}); |