mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-06 12:31:33 +01:00
closes #4700
This commit is contained in:
@@ -72,38 +72,25 @@ Categories.getPrivilegeSettings = function(socket, cid, callback) {
|
||||
};
|
||||
|
||||
Categories.copyPrivilegesToChildren = function(socket, cid, callback) {
|
||||
async.parallel({
|
||||
category: function(next) {
|
||||
categories.getCategories([cid], socket.uid, next);
|
||||
},
|
||||
privileges: function(next) {
|
||||
privileges.categories.list(cid, next);
|
||||
}
|
||||
}, function(err, results) {
|
||||
categories.getCategories([cid], socket.uid, function(err, categories) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
var category = results.category[0];
|
||||
var category = categories[0];
|
||||
|
||||
async.eachSeries(category.children, function(child, next) {
|
||||
copyPrivilegesToChildrenRecursive(child, results.privileges.groups, next);
|
||||
copyPrivilegesToChildrenRecursive(cid, child, next);
|
||||
}, callback);
|
||||
});
|
||||
};
|
||||
|
||||
function copyPrivilegesToChildrenRecursive(category, privilegeGroups, callback) {
|
||||
async.eachSeries(privilegeGroups, function(privGroup, next) {
|
||||
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) {
|
||||
function copyPrivilegesToChildrenRecursive(parentCid, category, callback) {
|
||||
categories.copyPrivilegesFrom(parentCid, category.cid, function(err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
async.eachSeries(category.children, function(child, next) {
|
||||
copyPrivilegesToChildrenRecursive(child, privilegeGroups, next);
|
||||
copyPrivilegesToChildrenRecursive(parentCid, child, next);
|
||||
}, callback);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user