added filterUids method to privileges

used to filter uids on a single category
This commit is contained in:
barisusakli
2014-09-09 15:19:57 -04:00
parent 493d0dea1e
commit 4e6719e0aa
8 changed files with 114 additions and 23 deletions

View File

@@ -173,6 +173,9 @@
Groups.isMemberOfGroupList = function(uid, groupListKey, callback) {
db.getSetMembers('group:' + groupListKey + ':members', function(err, groupNames) {
if (err) {
return callback(err);
}
groupNames = internals.removeEphemeralGroups(groupNames);
if (groupNames.length === 0) {
return callback(null, null);
@@ -180,11 +183,7 @@
async.some(groupNames, function(groupName, next) {
Groups.isMember(uid, groupName, function(err, isMember) {
if (!err && isMember) {
next(true);
} else {
next(false);
}
next(!err && isMember);
});
}, function(result) {
callback(null, result);
@@ -192,6 +191,38 @@
});
};
Groups.isMembersOfGroupList = function(uids, groupListKey, callback) {
db.getSetMembers('group:' + groupListKey + ':members', function(err, groupNames) {
if (err) {
return callback(err);
}
groupNames = internals.removeEphemeralGroups(groupNames);
if (groupNames.length === 0) {
return callback(null, null);
}
var results = [];
uids.forEach(function() {
results.push(false);
});
async.each(groupNames, function(groupName, next) {
Groups.isMembers(uids, groupName, function(err, isMembers) {
if (err) {
return next(err);
}
results.forEach(function(isMember, index) {
if (!isMember && isMembers[index]) {
results[index] = true;
}
});
next();
});
}, function(err) {
callback(err, results);
});
});
};
Groups.exists = function(name, callback) {
if (Array.isArray(name)) {
db.isSetMembers('groups', name, callback);