mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-05 18:47:03 +02:00
closes #1487
ban and delete user admin actions takes an array of uids now.
This commit is contained in:
@@ -9,14 +9,24 @@ var groups = require('../../groups'),
|
||||
User = {};
|
||||
|
||||
|
||||
User.makeAdmin = function(socket, theirid, callback) {
|
||||
groups.join('administrators', theirid, callback);
|
||||
User.makeAdmins = function(socket, uids, callback) {
|
||||
toggleAdmin(uids, true, callback);
|
||||
};
|
||||
|
||||
User.removeAdmin = function(socket, theirid, callback) {
|
||||
groups.leave('administrators', theirid, 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);
|
||||
}, callback);
|
||||
}
|
||||
|
||||
User.createUser = function(socket, userData, callback) {
|
||||
if (!userData) {
|
||||
return callback(new Error('[[error:invalid-data]]'));
|
||||
@@ -24,44 +34,61 @@ User.createUser = function(socket, userData, callback) {
|
||||
user.create(userData, callback);
|
||||
};
|
||||
|
||||
User.banUser = function(socket, theirid, callback) {
|
||||
user.isAdministrator(theirid, function(err, isAdmin) {
|
||||
User.banUsers = function(socket, uids, callback) {
|
||||
if(!Array.isArray(uids)) {
|
||||
return callback(new Error('[[error:invalid-data]]'));
|
||||
}
|
||||
|
||||
async.each(uids, banUser, callback);
|
||||
};
|
||||
|
||||
function banUser(uid, callback) {
|
||||
user.isAdministrator(uid, function(err, isAdmin) {
|
||||
if (err || isAdmin) {
|
||||
return callback(err || new Error('[[error:cant-ban-other-admins]]'));
|
||||
}
|
||||
|
||||
user.ban(theirid, function(err) {
|
||||
user.ban(uid, function(err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
var sockets = websockets.getUserSockets(theirid);
|
||||
var sockets = websockets.getUserSockets(uid);
|
||||
|
||||
for(var i=0; i<sockets.length; ++i) {
|
||||
sockets[i].emit('event:banned');
|
||||
}
|
||||
|
||||
websockets.logoutUser(theirid);
|
||||
websockets.logoutUser(uid);
|
||||
callback();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
User.unbanUsers = function(socket, uids, callback) {
|
||||
if(!Array.isArray(uids)) {
|
||||
return callback(new Error('[[error:invalid-data]]'));
|
||||
}
|
||||
async.each(uids, user.unban, callback);
|
||||
};
|
||||
|
||||
User.unbanUser = function(socket, theirid, callback) {
|
||||
user.unban(theirid, callback);
|
||||
};
|
||||
User.deleteUsers = function(socket, uids, callback) {
|
||||
if(!Array.isArray(uids)) {
|
||||
return callback(new Error('[[error:invalid-data]]'));
|
||||
}
|
||||
|
||||
User.deleteUser = function(socket, theirid, callback) {
|
||||
user.delete(theirid, function(err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
async.each(uids, function(uid, next) {
|
||||
user.delete(uid, function(err) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
events.logAdminUserDelete(socket.uid, theirid);
|
||||
events.logAdminUserDelete(socket.uid, uid);
|
||||
|
||||
websockets.logoutUser(theirid);
|
||||
callback();
|
||||
});
|
||||
websockets.logoutUser(uid);
|
||||
next();
|
||||
});
|
||||
}, callback);
|
||||
};
|
||||
|
||||
User.search = function(socket, username, callback) {
|
||||
|
||||
@@ -206,8 +206,6 @@ var winston = require('winston'),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
ThreadTools.toggleFollow = function(tid, uid, callback) {
|
||||
topics.isFollowing(tid, uid, function(err, following) {
|
||||
if (err) {
|
||||
|
||||
@@ -250,7 +250,8 @@ var bcrypt = require('bcryptjs'),
|
||||
},
|
||||
function(isAdmin, next) {
|
||||
user.status = !user.status ? 'online' : user.status;
|
||||
user.administrator = isAdmin ? '1':'0';
|
||||
user.administrator = isAdmin;
|
||||
user.banned = parseInt(user.banned, 10) === 1;
|
||||
db.isSortedSetMember('users:online', user.uid, next);
|
||||
},
|
||||
function(isMember, next) {
|
||||
|
||||
Reference in New Issue
Block a user