Skip to content

Commit a34c2f3

Browse files
committed
Fix Notifications from not allowed Boards.
Thanks to FK-PATZ3 and xet7 ! Fixes #6103
1 parent 6903e12 commit a34c2f3

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

models/activities.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,12 +363,12 @@ if (Meteor.isServer) {
363363
if (value) params[key] = value;
364364
});
365365
if (board) {
366+
const activeMemberIds = _.filter(board.members || [], m => m.isActive === true).map(m => m.userId);
366367
const BIGEVENTS = process.env.BIGEVENTS_PATTERN; // if environment BIGEVENTS_PATTERN is set, any activityType matching it is important
367368
if (BIGEVENTS) {
368369
try {
369370
const atype = activity.activityType;
370371
if (new RegExp(BIGEVENTS).exec(atype)) {
371-
const activeMemberIds = _.filter(board.members, m => m.isActive === true).map(m => m.userId);
372372
watchers = _.union(watchers, activeMemberIds); // notify all active members for important events
373373
}
374374
} catch (e) {
@@ -393,6 +393,9 @@ if (Meteor.isServer) {
393393
_.intersection(participants, trackingUsers),
394394
);
395395
}
396+
397+
// Ensure notifications only go to active members of the current board.
398+
watchers = _.intersection(watchers, activeMemberIds);
396399
}
397400
(await Notifications.getUsers(watchers)).forEach((user) => {
398401
// Skip if user is undefined or doesn't have an _id (e.g., deleted user or invalid ID)

models/cards.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2098,6 +2098,10 @@ Cards.helpers({
20982098
);
20992099

21002100
const newBoard = ReactiveCache.getBoard(boardId);
2101+
const allowedMemberIds = _.pluck(
2102+
_.filter(newBoard.members || [], member => member.isActive === true),
2103+
'userId',
2104+
);
21012105
const newBoardLabels = newBoard.labels;
21022106
const newCardLabelIds = _.pluck(
21032107
_.filter(newBoardLabels, label => {
@@ -2119,6 +2123,18 @@ Cards.helpers({
21192123
if (!Array.isArray(mutatedFields.customFields)) {
21202124
mutatedFields.customFields = [];
21212125
}
2126+
2127+
const currentMembers = Array.isArray(this.members) ? this.members : [];
2128+
const filteredMembers = currentMembers.filter(memberId => allowedMemberIds.includes(memberId));
2129+
if (_.difference(currentMembers, filteredMembers).length > 0) {
2130+
mutatedFields.members = filteredMembers;
2131+
}
2132+
2133+
const currentWatchers = Array.isArray(this.watchers) ? this.watchers : [];
2134+
const filteredWatchers = currentWatchers.filter(watcherId => allowedMemberIds.includes(watcherId));
2135+
if (_.difference(currentWatchers, filteredWatchers).length > 0) {
2136+
mutatedFields.watchers = filteredWatchers;
2137+
}
21222138
}
21232139

21242140
Cards.updateAsync(this._id, { $set: mutatedFields });

0 commit comments

Comments
 (0)