From 0b72cc40a25dbb717756ea8566f8f537cf65304b Mon Sep 17 00:00:00 2001 From: Waiter Zen Date: Tue, 5 Nov 2019 16:51:09 +0800 Subject: [PATCH 1/2] [notes] change apps id query logic for notes --- api/parts/mgmt/users.js | 51 +++++++++++++++++++ .../javascripts/countly/countly.common.js | 2 +- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/api/parts/mgmt/users.js b/api/parts/mgmt/users.js index 9bfff4f06a9..ef56af689a4 100644 --- a/api/parts/mgmt/users.js +++ b/api/parts/mgmt/users.js @@ -811,7 +811,54 @@ usersApi.deleteUserNotes = async function(params) { }); return true; }; +/** + * fetch apps id for those user can access; +* @param {params} params - params object +* @returns {array} app id array + */ +usersApi.fetchUserAppIds = async function(params) { + const query = {}; + const appIds = []; + if (!params.member.global_admin) { + if (params.member.admin_of) { + for (let i = 0; i < params.member.admin_of.length ;i++) { + if (params.member.admin_of[i] === "") { + continue; + } + appIds.push(params.member.admin_of[i]); + } + } + if (params.member.user_of) { + for (let i = 0; i < params.member.user_of.length ;i++) { + appIds.push(params.member.user_of[i]); + } + } + } + if (appIds.length > 0) { + query._id = {$in: appIds}; + } + let apps = []; + try { + apps = await new Promise((resolve, reject) => { + common.db.collection('apps').find(query).toArray((err, data) => { + if (err) { + console.log(err); + return reject(); + } + return resolve(data); + }); + }); + } + catch (e) { + console.log(e); + } + const ids = []; + apps.forEach((app)=>{ + ids.push(app._id); + }); + return ids; +}; /** * fetch Notes * @param {params} params - params object @@ -819,11 +866,15 @@ usersApi.deleteUserNotes = async function(params) { **/ usersApi.fetchNotes = async function(params) { countlyCommon.getPeriodObj(params); + const timestampRange = countlyCommon.getTimestampRangeQuery(params, false); let appIds = []; let filtedAppIds = []; try { appIds = JSON.parse(params.qstring.notes_apps); + if (!appIds || appIds.length === 0) { + appIds = await usersApi.fetchUserAppIds(params); + } filtedAppIds = appIds.filter((appId) => { if (params.member.global_admin || params.member.user_of.indexOf(appId) > -1 || params.member.admin_of.indexOf(appId) > -1) { return true; diff --git a/frontend/express/public/javascripts/countly/countly.common.js b/frontend/express/public/javascripts/countly/countly.common.js index 00130271217..e341efbc983 100644 --- a/frontend/express/public/javascripts/countly/countly.common.js +++ b/frontend/express/public/javascripts/countly/countly.common.js @@ -4076,7 +4076,7 @@ countlyCommon.getGraphNotes = function(appIds, callBack) { if (!appIds) { - appIds = [countlyCommon.ACTIVE_APP_ID]; + appIds = []; } return window.$.ajax({ type: "GET", From bde61bf107046650141144b7b187c4f03b554328 Mon Sep 17 00:00:00 2001 From: Waiter Zen Date: Sat, 21 Dec 2019 10:37:50 +0800 Subject: [PATCH 2/2] [notes] change apps id query logic for notes --- api/parts/mgmt/users.js | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/api/parts/mgmt/users.js b/api/parts/mgmt/users.js index ef56af689a4..7fecf5ef92a 100644 --- a/api/parts/mgmt/users.js +++ b/api/parts/mgmt/users.js @@ -837,27 +837,7 @@ usersApi.fetchUserAppIds = async function(params) { if (appIds.length > 0) { query._id = {$in: appIds}; } - let apps = []; - try { - apps = await new Promise((resolve, reject) => { - common.db.collection('apps').find(query).toArray((err, data) => { - if (err) { - console.log(err); - return reject(); - } - return resolve(data); - }); - }); - - } - catch (e) { - console.log(e); - } - const ids = []; - apps.forEach((app)=>{ - ids.push(app._id); - }); - return ids; + return appIds; }; /** * fetch Notes