fix: #7647, fix getModeratorUids

sets.groupNames is an array that contains other arrays of groupnames so passing it to getMembersOfGroups returned wrong results when there were more than 1 element in it.
This commit is contained in:
Baris Usakli
2019-05-29 15:44:33 -04:00
parent 5cd9e1bf86
commit 64679b37cc
2 changed files with 22 additions and 2 deletions

View File

@@ -140,6 +140,7 @@ Categories.getModerators = function (cid, callback) {
Categories.getModeratorUids = function (cids, callback) {
var sets;
var uniqGroups;
async.waterfall([
function (next) {
var groupNames = cids.reduce(function (memo, cid) {
@@ -162,11 +163,13 @@ Categories.getModeratorUids = function (cids, callback) {
return memo;
}, { groupNames: [], uids: [] });
groups.getMembersOfGroups(sets.groupNames, next);
uniqGroups = _.uniq(_.flatten(sets.groupNames));
groups.getMembersOfGroups(uniqGroups, next);
},
function (groupUids, next) {
var map = _.zipObject(uniqGroups, groupUids);
const moderatorUids = cids.map(function (cid, index) {
return _.union(sets.uids[index].concat(groupUids[index]));
return _.uniq(sets.uids[index].concat(_.flatten(sets.groupNames[index].map(g => map[g]))));
});
next(null, moderatorUids);
},