summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Hofmaier2020-07-02 21:19:09 +0200
committerChristian Hofmaier2020-07-02 21:19:09 +0200
commit043f9d64cc248b1d3f820499ba01c469419417af (patch)
treeb2010ca2027091dff531a3c77e2cac14b7581f9d
parent[permissionmanager] add new function to get allowed childs only (diff)
downloadbas-043f9d64cc248b1d3f820499ba01c469419417af.tar.gz
bas-043f9d64cc248b1d3f820499ba01c469419417af.tar.xz
bas-043f9d64cc248b1d3f820499ba01c469419417af.zip
[permissionmanager] return group objects instead of id list
-rw-r--r--server/lib/permissions/permissionhelper.js28
1 files changed, 23 insertions, 5 deletions
diff --git a/server/lib/permissions/permissionhelper.js b/server/lib/permissions/permissionhelper.js
index 7acf269..5185a62 100644
--- a/server/lib/permissions/permissionhelper.js
+++ b/server/lib/permissions/permissionhelper.js
@@ -73,11 +73,20 @@ async function getAllowedGroups (userid, permissionName) {
// 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))
+ result = result.concat(whitelist)
+ result = result.concat(whitelistChilds.subgroups)
}
// Filter result for unique entries
- return result.filter(function (elem, pos, arr) { return arr.indexOf(elem) === pos })
+ const filteredGroups = []
+ const groupMap = new Map()
+ for (const item of result) {
+ if (!groupMap.has(item.id)) {
+ groupMap.set(item.id, true)
+ filteredGroups.push(item)
+ }
+ }
+ result = filteredGroups
+ return result
}
}
@@ -154,10 +163,19 @@ async function getAllowedClients (userid, permissionName) {
// Get childs of whitelist groups, filtered by blacklist
var whitelistChilds = await groupHelper.getAllChildren(whitelist, blacklist)
- result = result.concat(whitelistChilds.clients.map(c => c.id))
+ result = result.concat(whitelistChilds.clients)
}
// Filter result for unique entries
- return result.filter(function (elem, pos, arr) { return arr.indexOf(elem) === pos })
+ const filteredClients = []
+ const clientMap = new Map()
+ for (const item of result) {
+ if (!clientMap.has(item.id)) {
+ clientMap.set(item.id, true)
+ filteredClients.push(item)
+ }
+ }
+ result = filteredClients
+ return result
}
}