From 336cbf64659a409e32d1a6640a7026ed213e53e9 Mon Sep 17 00:00:00 2001 From: Christian Hofmaier Date: Fri, 17 Jan 2020 04:20:22 +0000 Subject: [permissionmanager] rework list getters --- server/lib/permissions/permissionhelper.js | 47 +++++++----------------------- 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/server/lib/permissions/permissionhelper.js b/server/lib/permissions/permissionhelper.js index db2fc35..8e6b7cb 100644 --- a/server/lib/permissions/permissionhelper.js +++ b/server/lib/permissions/permissionhelper.js @@ -57,7 +57,7 @@ async function getAllowedGroups (userid, permissionName) { else if (!user.roles[0].permissions[0].groupdependent) return [0] // User has permission, permission is groupdependent else { - var permGrps = [] + var result = [] for (let i = 0; i < user.roles.length; i++) { var whitelist = [] var blacklist = [] @@ -70,26 +70,13 @@ async function getAllowedGroups (userid, permissionName) { } } - // Get childs of white and blacklist groups - var whiteSubChilds = await groupHelper.getAllChildren(whitelist) - var blackSubChilds = await groupHelper.getAllChildren(blacklist) - - // Add all whitelist-ids to result. - permGrps = permGrps.concat(whitelist.map(x => x.id)) - permGrps = permGrps.concat(whiteSubChilds.subgroups.map(s => s.id)) - - // Filter out blacklist-ids from the result. - blacklist = blacklist.map(x => x.id) - blacklist = blacklist.concat(blackSubChilds.subgroups.map(x => x.id)) - for (let k = 0; k < blacklist.length; k++) { - var index = permGrps.indexOf(blacklist[k]) - if (index > -1) { - permGrps.splice(index, 1) - } - } + // Get childs of whitelist groups, filtered by blacklist + var whitelistChilds = await groupHelper.getAllChildren(whitelist, blacklist) + result = result.concat(whitelist.map(x => x.id)) + result = result.concat(whitelistChilds.subgroups.map(s => s.id)) } // Filter result for unique entries - return permGrps.filter(function (elem, pos, arr) { return arr.indexOf(elem) === pos }) + return result.filter(function (elem, pos, arr) { return arr.indexOf(elem) === pos }) } } @@ -148,7 +135,7 @@ async function getAllowedClients (userid, permissionName) { else if (!user.roles[0].permissions[0].groupdependent) return [0] // User has permission, permission is groupdependent else { - var permClients = [] + var result = [] for (let i = 0; i < user.roles.length; i++) { var whitelist = [] var blacklist = [] @@ -161,24 +148,12 @@ async function getAllowedClients (userid, permissionName) { } } - // Get childs of white and blacklist groups - var whiteSubChilds = await groupHelper.getAllChildren(whitelist) - var blackSubChilds = await groupHelper.getAllChildren(blacklist) - - // Add all whitelist-ids to result. - permClients = permClients.concat(whiteSubChilds.clients.map(s => s.id)) - - // Filter out blacklist-ids from the result. - blackSubChilds = blackSubChilds.clients.map(x => x.id) - for (let k = 0; k < blackSubChilds.length; k++) { - var index = permClients.indexOf(blackSubChilds[k]) - if (index > -1) { - permClients.splice(index, 1) - } - } + // Get childs of whitelist groups, filtered by blacklist + var whitelistChilds = await groupHelper.getAllChildren(whitelist, blacklist) + result = result.concat(whitelistChilds.clients.map(c => c.id)) } // Filter result for unique entries - return permClients.filter(function (elem, pos, arr) { return arr.indexOf(elem) === pos }) + return result.filter(function (elem, pos, arr) { return arr.indexOf(elem) === pos }) } } -- cgit v1.2.3-55-g7522