mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-04 21:15:55 +01:00
some checks to make last admin isnt removed
This commit is contained in:
@@ -100,7 +100,7 @@ define('forum/admin/users', function() {
|
||||
return;
|
||||
}
|
||||
|
||||
if (uids.indexOf(yourid) !== -1) {
|
||||
if (uids.indexOf(yourid.toString()) !== -1) {
|
||||
app.alertError('You can\'t remove yourself as Administrator!');
|
||||
} else {
|
||||
bootbox.confirm('Do you really want to remove admins?', function(confirm) {
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
db.isSetMember('group:' + groupName + ':members', uid, callback);
|
||||
};
|
||||
|
||||
Groups.getMemberCount = function(groupName, callback) {
|
||||
db.setCount('group:' + groupName + ':members', callback);
|
||||
};
|
||||
|
||||
Groups.isMemberOfGroupList = function(uid, groupListKey, callback) {
|
||||
db.getSetMembers('group:' + groupListKey + ':members', function(err, groupNames) {
|
||||
groupNames = internals.removeEphemeralGroups(groupNames);
|
||||
|
||||
@@ -10,22 +10,38 @@ var groups = require('../../groups'),
|
||||
|
||||
|
||||
User.makeAdmins = function(socket, uids, callback) {
|
||||
toggleAdmin(uids, true, callback);
|
||||
};
|
||||
|
||||
User.removeAdmins = function(socket, uids, callback) {
|
||||
toggleAdmin(uids, false, callback);
|
||||
};
|
||||
|
||||
function toggleAdmin(uids, isAdmin, callback) {
|
||||
if(!Array.isArray(uids)) {
|
||||
return callback(new Error('[[error:invalid-data]]'));
|
||||
}
|
||||
|
||||
async.each(uids, function(uid, next) {
|
||||
groups[isAdmin ? 'join' : 'leave']('administrators', uid, next);
|
||||
groups.join('administrators', uid, next);
|
||||
}, callback);
|
||||
}
|
||||
};
|
||||
|
||||
User.removeAdmins = function(socket, uids, callback) {
|
||||
if(!Array.isArray(uids)) {
|
||||
return callback(new Error('[[error:invalid-data]]'));
|
||||
}
|
||||
|
||||
if (uids.indexOf(socket.uid.toString()) !== -1) {
|
||||
return callback(new Error('[[error:cant-remove-self-as-admin]]'));
|
||||
}
|
||||
|
||||
async.eachSeries(uids, function(uid, next) {
|
||||
groups.getMemberCount('administrators', function(err, count) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (count === 1) {
|
||||
return next(new Error('[[error:cant-remove-last-admin]]'));
|
||||
}
|
||||
|
||||
groups.leave('administrators', uid, next);
|
||||
});
|
||||
}, callback);
|
||||
};
|
||||
|
||||
User.createUser = function(socket, userData, callback) {
|
||||
if (!userData) {
|
||||
|
||||
Reference in New Issue
Block a user