Skip to content

Commit e7e2f4a

Browse files
committed
[crud-context] userApps and adminApps usages updated and added some other needed places too.
1 parent 5e325fc commit e7e2f4a

File tree

13 files changed

+43
-31
lines changed

13 files changed

+43
-31
lines changed

api/parts/data/stats.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
/** @lends module:api/parts/data/stats */
77
var stats = {},
88
async = require('async'),
9-
common = require("../../utils/common.js");
9+
common = require("../../utils/common.js"),
10+
{ getUserApps } = require('../../utils/rights.js');
1011

1112
var countlyDb;
1213
/**
@@ -65,7 +66,7 @@ stats.getUser = function(db, user, callback) {
6566
var apps;
6667

6768
if (!user.global_admin) {
68-
apps = user.user_of || [];
69+
apps = getUserApps(user) || [];
6970
}
7071

7172
getTotalEvents(function(totalEvents) {

api/parts/mgmt/apps.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ appsApi.getCurrentUserApps = function(params) {
6060
return true;
6161
}
6262

63-
var adminOfAppIds = getAdminApps(),
64-
userOfAppIds = getUserApps();
63+
var adminOfAppIds = getAdminApps(params.member),
64+
userOfAppIds = getUserApps(params.member);
6565

6666
common.db.collection('apps').find({ _id: { '$in': adminOfAppIds } }).toArray(function(err, admin_of) {
6767
common.db.collection('apps').find({ _id: { '$in': userOfAppIds } }).toArray(function(err2, user_of) {

api/parts/mgmt/users.js

+9-8
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ usersApi.getAllUsers = function(params) {
104104
var membersObj = {};
105105

106106
for (let i = 0; i < members.length; i++) {
107+
const userApps = getUserApps(members[i]);
108+
const adminApps = getAdminApps(members[i]);
109+
107110
const result = failedLogins.find(x => (x._id === JSON.stringify(["login", members[i].username]))) || { fails: 0 };
108111

109112
if (result.fails > 0 && result.fails % bruteforceFails === 0 && Math.floor(new Date().getTime() / 1000) < (((result.fails / bruteforceFails) * bruteforceWait) + result.lastFail)) {
@@ -113,15 +116,13 @@ usersApi.getAllUsers = function(params) {
113116
members[i].blocked = false;
114117
}
115118

116-
if (members[i].admin_of && members[i].admin_of.length > 0 && members[i].admin_of[0] === "") {
117-
members[i].admin_of.splice(0, 1);
119+
if (adminApps[0] === "") {
120+
adminApps.splice(0, 1);
118121
}
119-
if (members[i].user_of && members[i].user_of.length > 0 && members[i].user_of[0] === "") {
120-
members[i].user_of.splice(0, 1);
122+
if (userApps[0] === "") {
123+
userApps[0].splice(0, 1);
121124
}
122125

123-
members[i].admin_of = ((members[i].admin_of && members[i].admin_of.length > 0) ? members[i].admin_of : []);
124-
members[i].user_of = ((members[i].user_of && members[i].user_of.length > 0) ? members[i].user_of : []);
125126
members[i].global_admin = (members[i].global_admin === true);
126127
members[i].locked = (members[i].locked === true);
127128
members[i].created_at = members[i].created_at || 0;
@@ -828,8 +829,8 @@ usersApi.deleteUserNotes = async function(params) {
828829
usersApi.fetchUserAppIds = async function(params) {
829830
const query = {};
830831
const appIds = [];
831-
const adminApps = getAdminApps();
832-
const userApps = getUserApps();
832+
const adminApps = getAdminApps(params.member);
833+
const userApps = getUserApps(params.member);
833834
if (!params.member.global_admin) {
834835
if (adminApps.length > 0) {
835836
for (let i = 0; i < adminApps.length ;i++) {

api/utils/rights.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,9 @@ exports.validateUserForRead = function(params, callback, callbackParam) {
9090
reject('No app_id provided');
9191
return false;
9292
}
93+
const userApps = module.exports.getUserApps(member);
9394

94-
if (!((member.user_of && Array.isArray(member.user_of) && member.user_of.indexOf(params.qstring.app_id) !== -1) || member.global_admin)) {
95+
if (!((userApps.indexOf(params.qstring.app_id) !== -1) || member.global_admin)) {
9596
common.returnMessage(params, 401, 'User does not have view right for this application');
9697
reject('User does not have view right for this application');
9798
return false;
@@ -499,7 +500,7 @@ exports.dbUserHasAccessToCollection = function(params, collection, callback) {
499500
if (params.qstring.app_id) {
500501
//if app_id was provided, we need to check if user has access for this app_id
501502
// is user_of array contain current app_id?
502-
var isUserOf = params.member.user_of && Array.isArray(params.member.user_of) && params.member.user_of.indexOf(params.qstring.app_id) !== -1;
503+
var isUserOf = userApps.indexOf(params.qstring.app_id) !== -1;
503504
var isRestricted = params.member.app_restrict && params.member.app_restrict[params.qstring.app_id] && params.member.app_restrict[params.qstring.app_id].indexOf("#/manage/db");
504505
if (params.member.global_admin || isUserOf && !isRestricted) {
505506
apps = [params.qstring.app_id];

bin/upgrade/19.08/scripts/push.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ async function notifyGCM(db, apps) {
448448
console.log('[push] Checking member %s for GCM notifications', member.full_name);
449449

450450
let aps = [];
451-
let adminApps = getAdminApps();
451+
let adminApps = getAdminApps(member);
452452

453453
if (member.global_admin) {
454454
aps = apps;

frontend/express/libs/members.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
var authorize = require('./../../../api/utils/authorizer.js'); //for token validations
1313
var common = require('./../../../api/utils/common.js');
1414
var plugins = require('./../../../plugins/pluginManager.js');
15-
15+
var { getUserApps } = require('./../../../api/utils/rights.js');
1616
var configs = require('./../config', 'dont-enclose');
1717
var countlyMail = require('./../../../api/parts/mgmt/mail.js');
1818
var countlyStats = require('./../../../api/parts/data/stats.js');
@@ -355,8 +355,9 @@ membersUtility.login = function(req, res, callback) {
355355

356356
if ((!countlyConfig.web.track || countlyConfig.web.track === "GA" && member.global_admin || countlyConfig.web.track === "noneGA" && !member.global_admin) && !plugins.getConfig("api").offline_mode) {
357357
countlyStats.getUser(membersUtility.db, member, function(statsObj) {
358+
const userApps = getUserApps(member);
358359
var custom = {
359-
apps: (member.user_of) ? member.user_of.length : 0,
360+
apps: (userApps) ? userApps.length : 0,
360361
platforms: {"$addToSet": statsObj["total-platforms"]},
361362
events: statsObj["total-events"],
362363
pushes: statsObj["total-msg-sent"],

plugins/assistant/api/assistant.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const PromiseB = require("bluebird");
55
const async = require("async");
66
const _ = require('underscore');
77
const moment = require('moment-timezone');
8+
const { getUserApps } = require('../../../api/utils/rights.js');
89

910
(function(assistant) {
1011
const db_name_notifs = "assistant_notifs";
@@ -206,8 +207,9 @@ const moment = require('moment-timezone');
206207
});
207208
}
208209
else {
210+
const userApps = getUserApps(member);
209211
//get user list from member field
210-
getAppData(member.user_of);
212+
getAppData(userApps);
211213
}
212214
};
213215

plugins/compare/api/api.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ var exported = {},
88
crypto = require('crypto'),
99
async = require('async'),
1010
log = common.log('compare:api'),
11-
{ validateRead } = require('../../../api/utils/rights.js');
11+
{ validateRead, getUserApps } = require('../../../api/utils/rights.js');
1212

1313
const FEATURE_NAME = 'compare';
1414

@@ -107,10 +107,11 @@ const FEATURE_NAME = 'compare';
107107
params.qstring.app_id = appsToFetch[0];
108108

109109
validateRead(params, FEATURE_NAME, function() {
110+
const userApps = getUserApps(params.member);
110111
if (!params.member.global_admin) {
111112
for (var i = 0; i < appsToFetch.length; i++) {
112-
if (params.member && params.member.user_of) {
113-
if (params.member.user_of.indexOf(appsToFetch[i]) === -1) {
113+
if (params.member && userApps) {
114+
if (userApps.indexOf(appsToFetch[i]) === -1) {
114115
return common.returnMessage(params, 401, 'User does not have view rights for one or more apps provided in apps parameter');
115116
}
116117
}

plugins/push/api/parts/endpoints.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1079,8 +1079,8 @@ function cachedData(note) {
10791079
var query = {
10801080
'result.status': {$bitsAllSet: N.Status.Created, $bitsAllClear: N.Status.Deleted}
10811081
};
1082-
let adminApps = getAdminApps();
1083-
let userApps = getUserApps();
1082+
let adminApps = getAdminApps(params.member);
1083+
let userApps = getUserApps(params.member);
10841084
let app_id = params.qstring.app_id;
10851085

10861086
if (!app_id || app_id.length !== 24) {
@@ -2001,7 +2001,7 @@ function cachedData(note) {
20012001
* @returns {boolean} - true if is admin of app
20022002
*/
20032003
function adminOfApp(member, app) {
2004-
let adminApps = getAdminApps();
2004+
let adminApps = getAdminApps(member);
20052005
if (member.global_admin) {
20062006
return true;
20072007
}

plugins/reports/api/api.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var common = require('../../../api/utils/common.js'),
44
moment = require('moment-timezone'),
55
log = require('../../../api/utils/log')('reports:api'),
66
plugins = require('../../pluginManager.js'),
7-
{ validateCreate, validateRead, validateUpdate, validateDelete } = require('../../../api/utils/rights.js');
7+
{ validateCreate, validateRead, validateUpdate, validateDelete, getUserApps } = require('../../../api/utils/rights.js');
88

99
const FEATURE_NAME = 'reports';
1010

@@ -385,10 +385,10 @@ const FEATURE_NAME = 'reports';
385385
* @return {func} cb - callback function
386386
*/
387387
function validateCoreUser(params, props, cb) {
388-
388+
var userApps = getUserApps(params.member);
389389
var apps = props.apps;
390390
var isAppUser = apps.every(function(app) {
391-
return params.member.user_of && params.member.user_of.indexOf(app) > -1;
391+
return userApps && userApps.indexOf(app) > -1;
392392
});
393393

394394
if (!params.member.global_admin && !isAppUser) {

plugins/reports/api/generate_reports.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
//start db connection
2+
const { getAdminApps } = require('../../../api/utils/rights.js');
23
var plugins = require('../../pluginManager.js'),
34
moment = require('moment-timezone'),
45
async = require("async");
@@ -53,7 +54,8 @@ plugins.dbConnection().then((countlyDb) => {
5354
var arr = [];
5455
for (var i = 0; i < res.length; i++) {
5556
if (!res[i].global_admin) {
56-
arr.push({emails: [res[i].email], apps: res[i].admin_of || [], metrics: {"analytics": true, "revenue": true, "push": true, "crash": true }, frequency: "daily", hour: 17, minute: 0, day: 1, timezone: "Etc/GMT", user: res[i]._id});
57+
var adminApps = getAdminApps(res[i]);
58+
arr.push({emails: [res[i].email], apps: adminApps || [], metrics: {"analytics": true, "revenue": true, "push": true, "crash": true }, frequency: "daily", hour: 17, minute: 0, day: 1, timezone: "Etc/GMT", user: res[i]._id});
5759
}
5860
}
5961
async.map(arr, function(report, done) {

plugins/server-stats/api/api.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
const { getUserApps } = require('../../../api/utils/rights.js');
2+
13
var plugins = require('../../pluginManager.js'),
24
common = require('../../../api/utils/common.js'),
35
udp;
@@ -153,7 +155,7 @@ var plugins = require('../../pluginManager.js'),
153155

154156
ob.validateUserForMgmtReadAPI(function() {
155157
if (!params.member.global_admin) {
156-
var apps = params.member.user_of || [];
158+
var apps = getUserApps(params.member) || [];
157159
for (let i = 0; i < periodsToFetch.length; i++) {
158160
for (let j = 0; j < apps.length; j++) {
159161
if (apps[j] !== "") {
@@ -216,7 +218,7 @@ var plugins = require('../../pluginManager.js'),
216218
let filter = {"m": {$in: dateRangeArray} };
217219
if (!params.member.global_admin) {
218220
filter.$or = [];
219-
const hasUserApps = params.member.user_of;
221+
const hasUserApps = getUserApps(params.member);
220222
hasUserApps.forEach((id) => {
221223
dateRangeArray.forEach((period) => {
222224
filter.$or.push({_id: `${id}_${period}`});

plugins/server-stats/frontend/app.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var countlyConfig = require('../../../frontend/express/config');
33
var versionInfo = require('../../../frontend/express/version.info');
44
var request = require('request');
55
var moment = require('moment');
6+
const { getUserApps } = require('../../../api/utils/rights');
67

78
(function(plugin) {
89
plugin.init = function(app, countlyDb) {
@@ -11,7 +12,7 @@ var moment = require('moment');
1112
if (!countlyConfig.web.track || countlyConfig.web.track === "GA" && member.global_admin || countlyConfig.web.track === "noneGA" && !member.global_admin) {
1213
var match = {};
1314
if (versionInfo.trial) {
14-
match.a = {$in: member.user_of || []};
15+
match.a = {$in: getUserApps(member) || []};
1516
}
1617
countlyDb.collection("server_stats_data_points").aggregate([
1718
{

0 commit comments

Comments
 (0)