v1.18.x
Barış Soner Uşaklı 9 years ago
parent e4afa67956
commit 9ae8ee861a

@ -72,38 +72,25 @@ Categories.getPrivilegeSettings = function(socket, cid, callback) {
}; };
Categories.copyPrivilegesToChildren = function(socket, cid, callback) { Categories.copyPrivilegesToChildren = function(socket, cid, callback) {
async.parallel({ categories.getCategories([cid], socket.uid, function(err, categories) {
category: function(next) {
categories.getCategories([cid], socket.uid, next);
},
privileges: function(next) {
privileges.categories.list(cid, next);
}
}, function(err, results) {
if (err) { if (err) {
return callback(err); return callback(err);
} }
var category = results.category[0]; var category = categories[0];
async.eachSeries(category.children, function(child, next) { async.eachSeries(category.children, function(child, next) {
copyPrivilegesToChildrenRecursive(child, results.privileges.groups, next); copyPrivilegesToChildrenRecursive(cid, child, next);
}, callback); }, callback);
}); });
}; };
function copyPrivilegesToChildrenRecursive(category, privilegeGroups, callback) { function copyPrivilegesToChildrenRecursive(parentCid, category, callback) {
async.eachSeries(privilegeGroups, function(privGroup, next) { categories.copyPrivilegesFrom(parentCid, category.cid, function(err) {
var privs = Object.keys(privGroup.privileges);
async.each(privs, function(privilege, next) {
var isSet = privGroup.privileges[privilege];
groups[isSet ? 'join' : 'leave']('cid:' + category.cid + ':privileges:' + privilege, privGroup.name, next);
}, next);
}, function(err) {
if (err) { if (err) {
return callback(err); return callback(err);
} }
async.eachSeries(category.children, function(child, next) { async.eachSeries(category.children, function(child, next) {
copyPrivilegesToChildrenRecursive(child, privilegeGroups, next); copyPrivilegesToChildrenRecursive(parentCid, child, next);
}, callback); }, callback);
}); });
} }

Loading…
Cancel
Save