removed async.map

v1.18.x
barisusakli 11 years ago
parent 5323934cc2
commit 7d93926ef7

@ -57,7 +57,7 @@ module.exports = function(db, module) {
} }
bulk.execute(function(err) { bulk.execute(function(err) {
return callback(err); callback(err);
}); });
}; };
@ -153,6 +153,7 @@ module.exports = function(db, module) {
if (err) { if (err) {
return callback(err); return callback(err);
} }
var sets = {}; var sets = {};
data.forEach(function(set) { data.forEach(function(set) {
sets[set._key] = set.members || []; sets[set._key] = set.members || [];

@ -1,15 +1,18 @@
'use strict'; 'use strict';
var async = require('async'),
winston = require('winston'),
_ = require('underscore'),
user = require('./user'),
meta = require('./meta'),
db = require('./database'),
posts = require('./posts'),
utils = require('../public/src/utils');
(function(Groups) { (function(Groups) {
var async = require('async'),
winston = require('winston'),
user = require('./user'),
meta = require('./meta'),
db = require('./database'),
posts = require('./posts'),
utils = require('../public/src/utils'),
ephemeralGroups = ['guests'], var ephemeralGroups = ['guests'],
internals = { internals = {
filterGroups: function(groups, options) { filterGroups: function(groups, options) {
@ -186,7 +189,45 @@
return callback(err); return callback(err);
} }
callback(null, isMembers.indexOf(true) !== -1) callback(null, isMembers.indexOf(true) !== -1);
});
});
};
Groups.isMemberOfGroupsList = function(uid, groupListKeys, callback) {
var sets = groupListKeys.map(function(groupName) {
return 'group:' + groupName + ':members';
});
db.getSetsMembers(sets, function(err, members) {
if (err) {
return callback(err);
}
var uniqueGroups = _.unique(_.flatten(members));
uniqueGroups = internals.removeEphemeralGroups(uniqueGroups);
Groups.isMemberOfGroups(uid, uniqueGroups, function(err, isMembers) {
if (err) {
return callback(err);
}
var map = {};
uniqueGroups.forEach(function(groupName, index) {
map[groupName] = isMembers[index];
});
var result = members.map(function(groupNames) {
for (var i=0; i<groupNames.length; ++i) {
if (map[groupNames[i]]) {
return true;
}
}
return false;
});
callback(null, result);
}); });
}); });
}; };
@ -418,7 +459,7 @@
Groups.leave = function(groupName, uid, callback) { Groups.leave = function(groupName, uid, callback) {
callback = callback || function() {}; callback = callback || function() {};
db.setRemove('group:' + groupName + ':members', uid, function(err) { db.setRemove('group:' + groupName + ':members', uid, function(err) {
if (err) { if (err) {
return callback(err); return callback(err);

@ -42,9 +42,7 @@ helpers.isUserAllowedTo = function(privilege, uid, cids, callback) {
groups.isMemberOfGroups(uid, userKeys, next); groups.isMemberOfGroups(uid, userKeys, next);
}, },
hasGroupPrivilege: function(next) { hasGroupPrivilege: function(next) {
async.map(groupKeys, function(groupKey, next) { groups.isMemberOfGroupsList(uid, groupKeys, next);
groups.isMemberOfGroupList(uid, groupKey, next);
}, next);
} }
}, function(err, results) { }, function(err, results) {
if (err) { if (err) {
@ -56,7 +54,6 @@ helpers.isUserAllowedTo = function(privilege, uid, cids, callback) {
result.push((!results.userPrivilegeExists[i] && !results.groupPrivilegeExists[i]) || results.hasUserPrivilege[i] || results.hasGroupPrivilege[i]); result.push((!results.userPrivilegeExists[i] && !results.groupPrivilegeExists[i]) || results.hasUserPrivilege[i] || results.hasGroupPrivilege[i]);
} }
callback(null, result); callback(null, result);
}); });
}; };

Loading…
Cancel
Save