mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-28 01:21:13 +01:00
closes #5706
This commit is contained in:
@@ -120,7 +120,7 @@ Categories.getCategoriesByPrivilege = function (set, uid, privilege, callback) {
|
||||
Categories.getModerators = function (cid, callback) {
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
Groups.getMembers('cid:' + cid + ':privileges:mods', 0, -1, next);
|
||||
Groups.getMembers('cid:' + cid + ':privileges:moderate', 0, -1, next);
|
||||
},
|
||||
function (uids, next) {
|
||||
if (!Array.isArray(uids) || !uids.length) {
|
||||
|
||||
@@ -616,7 +616,7 @@ Flags.notify = function (flagObj, uid, callback) {
|
||||
async.waterfall([
|
||||
async.apply(posts.getCidByPid, flagObj.targetId),
|
||||
function (cid, next) {
|
||||
groups.getMembers('cid:' + cid + ':privileges:mods', 0, -1, next);
|
||||
groups.getMembers('cid:' + cid + ':privileges:moderate', 0, -1, next);
|
||||
},
|
||||
], next);
|
||||
},
|
||||
|
||||
@@ -14,23 +14,12 @@ privileges.userPrivilegeList = [
|
||||
'upload:post:image',
|
||||
'upload:post:file',
|
||||
'purge',
|
||||
'mods',
|
||||
'moderate',
|
||||
];
|
||||
|
||||
privileges.groupPrivilegeList = [
|
||||
'groups:find',
|
||||
'groups:read',
|
||||
'groups:topics:read',
|
||||
'groups:topics:create',
|
||||
'groups:topics:reply',
|
||||
'groups:posts:edit',
|
||||
'groups:posts:delete',
|
||||
'groups:topics:delete',
|
||||
'groups:upload:post:image',
|
||||
'groups:upload:post:file',
|
||||
'groups:purge',
|
||||
'groups:moderate',
|
||||
];
|
||||
privileges.groupPrivilegeList = privileges.userPrivilegeList.map(function (privilege) {
|
||||
return 'groups:' + privilege;
|
||||
});
|
||||
|
||||
privileges.privilegeList = privileges.userPrivilegeList.concat(privileges.groupPrivilegeList);
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ var async = require('async');
|
||||
var user = require('../user');
|
||||
var groups = require('../groups');
|
||||
var plugins = require('../plugins');
|
||||
var helpers = require('./helpers');
|
||||
|
||||
module.exports = function (privileges) {
|
||||
privileges.users = {};
|
||||
@@ -54,27 +55,13 @@ module.exports = function (privileges) {
|
||||
return array.indexOf(cid) === index;
|
||||
});
|
||||
|
||||
var groupNames = uniqueCids.map(function (cid) {
|
||||
return 'cid:' + cid + ':privileges:mods'; // At some point we should *probably* change this to "moderate" as well
|
||||
});
|
||||
|
||||
var groupListNames = uniqueCids.map(function (cid) {
|
||||
return 'cid:' + cid + ':privileges:groups:moderate';
|
||||
});
|
||||
|
||||
async.parallel({
|
||||
user: async.apply(groups.isMemberOfGroups, uid, groupNames),
|
||||
group: async.apply(groups.isMemberOfGroupsList, uid, groupListNames),
|
||||
}, next);
|
||||
helpers.isUserAllowedTo('moderate', uid, uniqueCids, next);
|
||||
},
|
||||
function (checks, next) {
|
||||
var isMembers = checks.user.map(function (isMember, idx) {
|
||||
return isMember || checks.group[idx];
|
||||
});
|
||||
function (isAllowed, next) {
|
||||
var map = {};
|
||||
|
||||
uniqueCids.forEach(function (cid, index) {
|
||||
map[cid] = isMembers[index];
|
||||
map[cid] = isAllowed[index];
|
||||
});
|
||||
|
||||
var isModerator = cids.map(function (cid) {
|
||||
@@ -91,7 +78,7 @@ module.exports = function (privileges) {
|
||||
function (next) {
|
||||
async.parallel([
|
||||
async.apply(privileges.users.isGlobalModerator, uids),
|
||||
async.apply(groups.isMembers, uids, 'cid:' + cid + ':privileges:mods'),
|
||||
async.apply(groups.isMembers, uids, 'cid:' + cid + ':privileges:moderate'),
|
||||
async.apply(groups.isMembersOfGroupList, uids, 'cid:' + cid + ':privileges:groups:moderate'),
|
||||
], next);
|
||||
},
|
||||
@@ -110,7 +97,7 @@ module.exports = function (privileges) {
|
||||
function (next) {
|
||||
async.parallel([
|
||||
async.apply(privileges.users.isGlobalModerator, uid),
|
||||
async.apply(groups.isMember, uid, 'cid:' + cid + ':privileges:mods'),
|
||||
async.apply(groups.isMember, uid, 'cid:' + cid + ':privileges:moderate'),
|
||||
async.apply(groups.isMemberOfGroupList, uid, 'cid:' + cid + ':privileges:groups:moderate'),
|
||||
], next);
|
||||
},
|
||||
|
||||
@@ -64,7 +64,7 @@ module.exports = function (SocketPosts) {
|
||||
groups.getMembersOfGroups([
|
||||
'administrators',
|
||||
'Global Moderators',
|
||||
'cid:' + result.topic.cid + ':privileges:mods',
|
||||
'cid:' + result.topic.cid + ':privileges:moderate',
|
||||
'cid:' + result.topic.cid + ':privileges:groups:moderate',
|
||||
], next);
|
||||
},
|
||||
|
||||
33
src/upgrades/1.5.1/rename_mods_group.js
Normal file
33
src/upgrades/1.5.1/rename_mods_group.js
Normal file
@@ -0,0 +1,33 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var winston = require('winston');
|
||||
|
||||
var batch = require('../../batch');
|
||||
var groups = require('../../groups');
|
||||
|
||||
|
||||
module.exports = {
|
||||
name: 'rename user mod privileges group',
|
||||
timestamp: Date.UTC(2017, 4, 26),
|
||||
method: function (callback) {
|
||||
var progress = this.progress;
|
||||
batch.processSortedSet('categories:cid', function (cids, next) {
|
||||
async.eachSeries(cids, function (cid, next) {
|
||||
var groupName = 'cid:' + cid + ':privileges:mods';
|
||||
var newName = 'cid:' + cid + ':privileges:moderate';
|
||||
groups.exists(groupName, function (err, exists) {
|
||||
if (err || !exists) {
|
||||
progress.incr();
|
||||
return next(err);
|
||||
}
|
||||
winston.info('renaming ' + groupName + ' to ' + newName);
|
||||
progress.incr();
|
||||
groups.renameGroup(groupName, newName, next);
|
||||
});
|
||||
}, next);
|
||||
}, {
|
||||
progress: progress,
|
||||
}, callback);
|
||||
},
|
||||
};
|
||||
@@ -280,7 +280,7 @@ User.getModeratorUids = function (callback) {
|
||||
async.apply(db.getSortedSetRange, 'categories:cid', 0, -1),
|
||||
function (cids, next) {
|
||||
var groupNames = cids.map(function (cid) {
|
||||
return 'cid:' + cid + ':privileges:mods';
|
||||
return 'cid:' + cid + ':privileges:moderate';
|
||||
});
|
||||
|
||||
groups.getMembersOfGroups(groupNames, next);
|
||||
|
||||
@@ -494,7 +494,7 @@ describe('Admin Controllers', function () {
|
||||
assert.ifError(err);
|
||||
moderatorJar = _jar;
|
||||
|
||||
groups.join('cid:' + cid + ':privileges:mods', moderatorUid, done);
|
||||
groups.join('cid:' + cid + ':privileges:moderate', moderatorUid, done);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user