From f397690106edb5bbfa1a2da02b9e5b97b05fc335 Mon Sep 17 00:00:00 2001 From: "Pierre H. Lehnen" Date: Wed, 21 Nov 2018 11:50:03 -0200 Subject: [PATCH] Changed subscription query to only load subscriptions that don't have E2E keys (#12692) --- .../server/methods/requestSubscriptionKeys.js | 6 +++--- .../rocketchat-e2e/server/models/Subscriptions.js | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/rocketchat-e2e/server/methods/requestSubscriptionKeys.js b/packages/rocketchat-e2e/server/methods/requestSubscriptionKeys.js index 8653937d5b7..50d15ce4814 100644 --- a/packages/rocketchat-e2e/server/methods/requestSubscriptionKeys.js +++ b/packages/rocketchat-e2e/server/methods/requestSubscriptionKeys.js @@ -9,11 +9,11 @@ Meteor.methods({ }); } - // Get all encrypted rooms that the user is subscribed to - - const subscriptions = RocketChat.models.Subscriptions.findByUserId(Meteor.userId()); + // Get all encrypted rooms that the user is subscribed to and has no E2E key yet + const subscriptions = RocketChat.models.Subscriptions.findByUserIdWithoutE2E(Meteor.userId()); const roomIds = subscriptions.map((subscription) => subscription.rid); + // For all subscriptions without E2E key, get the rooms that have encryption enabled const query = { e2eKeyId : { $exists: true, diff --git a/packages/rocketchat-e2e/server/models/Subscriptions.js b/packages/rocketchat-e2e/server/models/Subscriptions.js index e949c192991..2ab46b438e5 100644 --- a/packages/rocketchat-e2e/server/models/Subscriptions.js +++ b/packages/rocketchat-e2e/server/models/Subscriptions.js @@ -27,3 +27,14 @@ RocketChat.models.Subscriptions.resetUserE2EKey = function(userId) { multi: true, }); }; + +RocketChat.models.Subscriptions.findByUserIdWithoutE2E = function(userId, options) { + const query = { + 'u._id': userId, + E2EKey: { + $exists: false, + }, + }; + + return this.find(query, options); +};