From 767d8e66e713d40540e8dd008c9cd1ed38f12585 Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Sun, 5 Feb 2023 00:29:41 +0100 Subject: [PATCH] Move every ImpersonatedUsers.findOne(idOrFirstObjectSelector, options) to the ReactiveCache --- imports/reactiveCache.js | 50 ++++++++++++++++++++++++++++++++++++++++ models/export.js | 12 +++------- models/exportExcel.js | 4 +--- models/exportPDF.js | 4 +--- models/users.js | 4 +--- 5 files changed, 56 insertions(+), 18 deletions(-) diff --git a/imports/reactiveCache.js b/imports/reactiveCache.js index a5ed975a9..beff4b97d 100644 --- a/imports/reactiveCache.js +++ b/imports/reactiveCache.js @@ -139,6 +139,14 @@ ReactiveCacheServer = { const ret = Triggers.find(selector, options).fetch(); return ret; }, + getImpersonatedUser(idOrFirstObjectSelector, options) { + const ret = ImpersonatedUsers.findOne(idOrFirstObjectSelector, options); + return ret; + }, + getImpersonatedUsers(selector, options) { + const ret = ImpersonatedUsers.find(selector, options).fetch(); + return ret; + }, getCurrentSetting() { const ret = Settings.findOne(); return ret; @@ -561,6 +569,30 @@ ReactiveCacheClient = { const ret = this.__triggers.get(Jsons.stringify(select)); return ret; }, + getImpersonatedUser(idOrFirstObjectSelector, options) { + const idOrFirstObjectSelect = {idOrFirstObjectSelector, options} + if (!this.__impersonatedUser) { + this.__impersonatedUser = new DataCache(_idOrFirstObjectSelect => { + const __select = Jsons.parse(_idOrFirstObjectSelect); + const _ret = ImpersonatedUsers.findOne(__select.idOrFirstObjectSelector, __select.options); + return _ret; + }); + } + const ret = this.__impersonatedUser.get(Jsons.stringify(idOrFirstObjectSelect)); + return ret; + }, + getImpersonatedUsers(selector, options) { + const select = {selector, options} + if (!this.__impersonatedUsers) { + this.__impersonatedUsers = new DataCache(_select => { + const __select = Jsons.parse(_select); + const _ret = ImpersonatedUsers.find(__select.selector, __select.options).fetch(); + return _ret; + }); + } + const ret = this.__impersonatedUsers.get(Jsons.stringify(select)); + return ret; + }, getCurrentSetting() { if (!this.__currentSetting || !this.__currentSetting.get()) { this.__currentSetting = new DataCache(() => { @@ -896,6 +928,24 @@ ReactiveCache = { } return ret; }, + getImpersonatedUser(idOrFirstObjectSelector, options) { + let ret; + if (Meteor.isServer) { + ret = ReactiveCacheServer.getImpersonatedUser(idOrFirstObjectSelector, options); + } else { + ret = ReactiveCacheClient.getImpersonatedUser(idOrFirstObjectSelector, options); + } + return ret; + }, + getImpersonatedUsers(selector, options) { + let ret; + if (Meteor.isServer) { + ret = ReactiveCacheServer.getImpersonatedUsers(selector, options); + } else { + ret = ReactiveCacheClient.getImpersonatedUsers(selector, options); + } + return ret; + }, getCurrentSetting() { let ret; if (Meteor.isServer) { diff --git a/models/export.js b/models/export.js index 11f50cf58..68b74087b 100644 --- a/models/export.js +++ b/models/export.js @@ -39,9 +39,7 @@ if (Meteor.isServer) { 'services.resume.loginTokens.hashedToken': hashToken, }); adminId = user._id.toString(); - impersonateDone = ImpersonatedUsers.findOne({ - adminId: adminId, - }); + impersonateDone = ReactiveCache.getImpersonatedUser({ adminId: adminId }); } else if (!Meteor.settings.public.sandstorm) { Authentication.checkUserId(req.userId); user = ReactiveCache.getUser({ _id: req.userId, isAdmin: true }); @@ -103,9 +101,7 @@ if (Meteor.isServer) { 'services.resume.loginTokens.hashedToken': hashToken, }); adminId = user._id.toString(); - impersonateDone = ImpersonatedUsers.findOne({ - adminId: adminId, - }); + impersonateDone = ReactiveCache.getImpersonatedUser({ adminId: adminId }); } else if (!Meteor.settings.public.sandstorm) { Authentication.checkUserId(req.userId); user = ReactiveCache.getUser({ _id: req.userId, isAdmin: true }); @@ -159,9 +155,7 @@ if (Meteor.isServer) { 'services.resume.loginTokens.hashedToken': hashToken, }); adminId = user._id.toString(); - impersonateDone = ImpersonatedUsers.findOne({ - adminId: adminId, - }); + impersonateDone = ReactiveCache.getImpersonatedUser({ adminId: adminId }); } else if (!Meteor.settings.public.sandstorm) { Authentication.checkUserId(req.userId); user = ReactiveCache.getUser({ diff --git a/models/exportExcel.js b/models/exportExcel.js index 7cb497c8b..ffec16e85 100644 --- a/models/exportExcel.js +++ b/models/exportExcel.js @@ -42,9 +42,7 @@ runOnServer(function() { 'services.resume.loginTokens.hashedToken': hashToken, }); adminId = user._id.toString(); - impersonateDone = ImpersonatedUsers.findOne({ - adminId: adminId, - }); + impersonateDone = ReactiveCache.getImpersonatedUser({ adminId: adminId }); } else if (!Meteor.settings.public.sandstorm) { Authentication.checkUserId(req.userId); user = ReactiveCache.getUser({ diff --git a/models/exportPDF.js b/models/exportPDF.js index 863702b97..0af6e73f2 100644 --- a/models/exportPDF.js +++ b/models/exportPDF.js @@ -44,9 +44,7 @@ runOnServer(function() { 'services.resume.loginTokens.hashedToken': hashToken, }); adminId = user._id.toString(); - impersonateDone = ImpersonatedUsers.findOne({ - adminId: adminId, - }); + impersonateDone = ReactiveCache.getImpersonatedUser({ adminId: adminId }); } else if (!Meteor.settings.public.sandstorm) { Authentication.checkUserId(req.userId); user = ReactiveCache.getUser({ diff --git a/models/users.js b/models/users.js index f638e922d..d9d1af71e 100644 --- a/models/users.js +++ b/models/users.js @@ -1532,9 +1532,7 @@ if (Meteor.isServer) { }, isImpersonated(userId) { check(userId, String); - const isImpersonated = ImpersonatedUsers.findOne({ - userId: userId, - }); + const isImpersonated = ReactiveCache.getImpersonatedUser({ userId: userId }); return isImpersonated; }, setUsersTeamsTeamDisplayName(teamId, teamDisplayName) {