|
|
@ -21,28 +21,18 @@ module.exports = function(privileges) {
|
|
|
|
if (!Array.isArray(pids) || !pids.length) {
|
|
|
|
if (!Array.isArray(pids) || !pids.length) {
|
|
|
|
return callback(null, []);
|
|
|
|
return callback(null, []);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
async.parallel({
|
|
|
|
|
|
|
|
manage: function(next) {
|
|
|
|
|
|
|
|
helpers.hasEnoughReputationFor(['privileges:manage_content', 'privileges:manage_topic'], uid, next);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
isAdministrator: function(next) {
|
|
|
|
|
|
|
|
user.isAdministrator(uid, next);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}, function(err, userResults) {
|
|
|
|
|
|
|
|
if(err) {
|
|
|
|
|
|
|
|
return callback(err);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var userPriv = userResults.isAdministrator || userResults.manage;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async.parallel({
|
|
|
|
async.parallel({
|
|
|
|
isOwner: function(next) {
|
|
|
|
isAdmin: function(next){
|
|
|
|
posts.isOwner(pids, uid, next);
|
|
|
|
user.isAdministrator(uid, next);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
isModerator: function(next) {
|
|
|
|
isModerator: function(next) {
|
|
|
|
posts.isModerator(pids, uid, next);
|
|
|
|
posts.isModerator(pids, uid, next);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
isOwner: function(next) {
|
|
|
|
|
|
|
|
posts.isOwner(pids, uid, next);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, function(err, postResults) {
|
|
|
|
}, function(err, results) {
|
|
|
|
if (err) {
|
|
|
|
if (err) {
|
|
|
|
return callback(err);
|
|
|
|
return callback(err);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -50,17 +40,16 @@ module.exports = function(privileges) {
|
|
|
|
var privileges = [];
|
|
|
|
var privileges = [];
|
|
|
|
|
|
|
|
|
|
|
|
for (var i=0; i<pids.length; ++i) {
|
|
|
|
for (var i=0; i<pids.length; ++i) {
|
|
|
|
var editable = userPriv || postResults.isModerator[i] || postResults.isOwner[i];
|
|
|
|
var editable = results.isAdmin || results.isModerator[i] || results.isOwner[i];
|
|
|
|
privileges.push({
|
|
|
|
privileges.push({
|
|
|
|
editable: editable,
|
|
|
|
editable: editable,
|
|
|
|
view_deleted: editable,
|
|
|
|
view_deleted: editable,
|
|
|
|
move: userResults.isAdministrator || postResults.isModerator[i]
|
|
|
|
move: results.isAdmin || results.isModerator[i]
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
callback(null, privileges);
|
|
|
|
callback(null, privileges);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
privileges.posts.can = function(privilege, pid, uid, callback) {
|
|
|
|
privileges.posts.can = function(privilege, pid, uid, callback) {
|
|
|
@ -154,16 +143,11 @@ module.exports = function(privileges) {
|
|
|
|
if (isLocked) {
|
|
|
|
if (isLocked) {
|
|
|
|
return callback(null, {isLocked: true});
|
|
|
|
return callback(null, {isLocked: true});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
helpers.some([
|
|
|
|
|
|
|
|
function(next) {
|
|
|
|
|
|
|
|
posts.isOwner(pid, uid, next);
|
|
|
|
posts.isOwner(pid, uid, next);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
function(next) {
|
|
|
|
function(isOwner, next) {
|
|
|
|
helpers.hasEnoughReputationFor(['privileges:manage_content', 'privileges:manage_topic'], uid, next);
|
|
|
|
next(null, {editable: isOwner});
|
|
|
|
}
|
|
|
|
|
|
|
|
], function(err, editable) {
|
|
|
|
|
|
|
|
next(err, {editable: editable});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
], callback);
|
|
|
|
], callback);
|
|
|
|
}
|
|
|
|
}
|
|
|
|