mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-07 22:45:46 +01:00
admin cleanup
removed unnecessary admin checks in src/admin/user then realized they are just one liners so moved them to src/socket.io.admin.js moved categories update to categories folder
This commit is contained in:
@@ -53,14 +53,25 @@ define(function() {
|
||||
|
||||
if (!isUserAdmin(banBtn)) {
|
||||
if (isUserBanned(banBtn)) {
|
||||
socket.emit('admin.user.unbanUser', uid);
|
||||
socket.emit('admin.user.unbanUser', uid, function(err) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
app.alertSuccess('This user is unbanned!');
|
||||
});
|
||||
|
||||
banBtn.removeClass('btn-warning');
|
||||
parent.attr('data-banned', 0);
|
||||
updateUserAdminButtons($('.admin-btn'));
|
||||
} else {
|
||||
bootbox.confirm('Do you really want to ban "' + parent.attr('data-username') + '"?', function(confirm) {
|
||||
if (confirm) {
|
||||
socket.emit('admin.user.banUser', uid);
|
||||
socket.emit('admin.user.banUser', uid, function(err) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
app.alertSuccess('This user is banned!');
|
||||
});
|
||||
banBtn.addClass('btn-warning');
|
||||
parent.attr('data-banned', 1);
|
||||
updateUserAdminButtons($('.admin-btn'));
|
||||
@@ -85,14 +96,24 @@ define(function() {
|
||||
timeout: 5000
|
||||
});
|
||||
} else if (!isUserAdmin(adminBtn)) {
|
||||
socket.emit('admin.user.makeAdmin', uid);
|
||||
socket.emit('admin.user.makeAdmin', uid, function(err) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
app.alertSuccess('This user is now an administrator.');
|
||||
});
|
||||
parent.attr('data-admin', 1);
|
||||
updateUserBanButtons($('.ban-btn'));
|
||||
updateUserAdminButtons($('.admin-btn'));
|
||||
} else if(uid !== yourid) {
|
||||
bootbox.confirm('Do you really want to remove this user as admin "' + parent.attr('data-username') + '"?', function(confirm) {
|
||||
if (confirm) {
|
||||
socket.emit('admin.user.removeAdmin', uid);
|
||||
socket.emit('admin.user.removeAdmin', uid, function(err) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
app.alertSuccess('This user is no longer an administrator.');
|
||||
});
|
||||
parent.attr('data-admin', 0);
|
||||
updateUserBanButtons($('.ban-btn'));
|
||||
updateUserAdminButtons($('.admin-btn'));
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
|
||||
var async = require('async'),
|
||||
utils = require('../../public/src/utils'),
|
||||
user = require('../user'),
|
||||
groups = require('../groups');
|
||||
|
||||
(function(UserAdmin) {
|
||||
|
||||
UserAdmin.createUser = function(uid, userData, callback) {
|
||||
user.isAdministrator(uid, function(err, isAdmin) {
|
||||
if(err || !isAdmin) {
|
||||
return callback(err || new Error('You are not an administrator'));
|
||||
}
|
||||
|
||||
user.create(userData, callback);
|
||||
});
|
||||
};
|
||||
|
||||
UserAdmin.makeAdmin = function(uid, theirid, socket) {
|
||||
user.isAdministrator(uid, function(err, isAdmin) {
|
||||
if (isAdmin) {
|
||||
groups.join('administrators', theirid, function(err) {
|
||||
if (!err) {
|
||||
socket.emit('event:alert', {
|
||||
title: 'User Modified',
|
||||
message: 'This user is now an administrator!',
|
||||
type: 'success',
|
||||
timeout: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
socket.emit('event:alert', {
|
||||
title: 'Warning',
|
||||
message: 'You need to be an administrator to make someone else an administrator!',
|
||||
type: 'warning',
|
||||
timeout: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
UserAdmin.removeAdmin = function(uid, theirid, socket) {
|
||||
user.isAdministrator(uid, function(err, isAdmin) {
|
||||
if (isAdmin) {
|
||||
groups.leave('administrators', theirid, function(err) {
|
||||
if (!err) {
|
||||
|
||||
socket.emit('event:alert', {
|
||||
title: 'User Modified',
|
||||
message: 'This user is no longer an administrator!',
|
||||
type: 'success',
|
||||
timeout: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
UserAdmin.banUser = function(uid, theirid, socket, callback) {
|
||||
user.isAdministrator(uid, function(err, amIAdmin) {
|
||||
user.isAdministrator(theirid, function(err, areTheyAdmin) {
|
||||
if (amIAdmin && !areTheyAdmin) {
|
||||
user.ban(theirid, function(err, result) {
|
||||
callback(true);
|
||||
socket.emit('event:alert', {
|
||||
alert_id: 'ban_user',
|
||||
title: 'User Banned',
|
||||
message: 'This user is banned!',
|
||||
type: 'success',
|
||||
timeout: 2000
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
UserAdmin.unbanUser = function(uid, theirid, socket) {
|
||||
user.isAdministrator(uid, function(err, amIAdmin) {
|
||||
if (amIAdmin) {
|
||||
user.unban(theirid, function(err, result) {
|
||||
socket.emit('event:alert', {
|
||||
alert_id: 'ban_user',
|
||||
title: 'User Unbanned',
|
||||
message: 'This user is unbanned!',
|
||||
type: 'success',
|
||||
timeout: 2000
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
UserAdmin.deleteUser = function(uid, theirid, callback) {
|
||||
async.waterfall([
|
||||
function(next) {
|
||||
user.isAdministrator(uid, next);
|
||||
},
|
||||
function(isAdmin, next) {
|
||||
if(!isAdmin) {
|
||||
return next(new Error('You are not an administrator'));
|
||||
}
|
||||
user.delete(uid, theirid, next);
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
}(exports));
|
||||
@@ -21,6 +21,7 @@ var db = require('./database'),
|
||||
|
||||
require('./categories/activeusers')(Categories);
|
||||
require('./categories/recentreplies')(Categories);
|
||||
require('./categories/update')(Categories);
|
||||
|
||||
Categories.create = function(data, callback) {
|
||||
db.incrObjectField('global', 'nextCid', function(err, cid) {
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
var async = require('async'),
|
||||
db = require('./../database'),
|
||||
utils = require('./../../public/src/utils'),
|
||||
categories = require('./../categories');
|
||||
utils = require('./../../public/src/utils');
|
||||
|
||||
(function(CategoriesAdmin) {
|
||||
|
||||
CategoriesAdmin.update = function(modified, socket, callback) {
|
||||
module.exports = function(Categories) {
|
||||
|
||||
Categories.update = function(modified, callback) {
|
||||
|
||||
function updateCategory(cid, next) {
|
||||
var category = modified[cid];
|
||||
@@ -43,4 +43,4 @@ var async = require('async'),
|
||||
});
|
||||
};
|
||||
|
||||
}(exports));
|
||||
};
|
||||
@@ -9,12 +9,8 @@ var groups = require('../groups'),
|
||||
categories = require('../categories'),
|
||||
CategoryTools = require('../categoryTools'),
|
||||
logger = require('../logger'),
|
||||
events = require('../events'),
|
||||
db = require('../database'),
|
||||
admin = {
|
||||
user: require('../admin/user'),
|
||||
categories: require('../admin/categories')
|
||||
},
|
||||
|
||||
async = require('async'),
|
||||
winston = require('winston'),
|
||||
index = require('./index'),
|
||||
@@ -32,9 +28,8 @@ var groups = require('../groups'),
|
||||
};
|
||||
|
||||
SocketAdmin.before = function(socket, next) {
|
||||
// Verify administrative privileges
|
||||
user.isAdministrator(socket.uid, function(err, isAdmin) {
|
||||
if (isAdmin) {
|
||||
if (!err && isAdmin) {
|
||||
next();
|
||||
} else {
|
||||
winston.warn('[socket.io] Call to admin method blocked (accessed by uid ' + socket.uid + ')');
|
||||
@@ -74,24 +69,32 @@ SocketAdmin.fireEvent = function(socket, data, callback) {
|
||||
};
|
||||
|
||||
/* User */
|
||||
SocketAdmin.user.makeAdmin = function(socket, theirid) {
|
||||
admin.user.makeAdmin(socket.uid, theirid, socket);
|
||||
SocketAdmin.user.makeAdmin = function(socket, theirid, callback) {
|
||||
groups.join('administrators', theirid, callback);
|
||||
};
|
||||
|
||||
SocketAdmin.user.removeAdmin = function(socket, theirid) {
|
||||
admin.user.removeAdmin(socket.uid, theirid, socket);
|
||||
SocketAdmin.user.removeAdmin = function(socket, theirid, callback) {
|
||||
groups.leave('administrators', theirid, callback);
|
||||
};
|
||||
|
||||
SocketAdmin.user.createUser = function(socket, user, callback) {
|
||||
if(!user) {
|
||||
SocketAdmin.user.createUser = function(socket, userData, callback) {
|
||||
if (!userData) {
|
||||
return callback(new Error('invalid data'));
|
||||
}
|
||||
admin.user.createUser(socket.uid, user, callback);
|
||||
user.create(userData, callback);
|
||||
};
|
||||
|
||||
SocketAdmin.user.banUser = function(socket, theirid) {
|
||||
admin.user.banUser(socket.uid, theirid, socket, function(isBanned) {
|
||||
if(isBanned) {
|
||||
SocketAdmin.user.banUser = function(socket, theirid, callback) {
|
||||
user.isAdministrator(theirid, function(err, isAdmin) {
|
||||
if (err || isAdmin) {
|
||||
return callback(err || new Error('You can\'t ban other admins!'));
|
||||
}
|
||||
|
||||
user.ban(theirid, function(err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
var sockets = index.getUserSockets(theirid);
|
||||
|
||||
for(var i=0; i<sockets.length; ++i) {
|
||||
@@ -99,16 +102,26 @@ SocketAdmin.user.banUser = function(socket, theirid) {
|
||||
}
|
||||
|
||||
module.parent.exports.logoutUser(theirid);
|
||||
}
|
||||
callback();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
SocketAdmin.user.unbanUser = function(socket, theirid) {
|
||||
admin.user.unbanUser(socket.uid, theirid, socket);
|
||||
SocketAdmin.user.unbanUser = function(socket, theirid, callback) {
|
||||
user.unban(theirid, callback);
|
||||
};
|
||||
|
||||
SocketAdmin.user.deleteUser = function(socket, theirid, callback) {
|
||||
admin.user.deleteUser(socket.uid, theirid, callback);
|
||||
user.delete(theirid, function(err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
events.logAdminUserDelete(socket.uid, theirid);
|
||||
|
||||
module.parent.exports.logoutUser(theirid);
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
SocketAdmin.user.search = function(socket, username, callback) {
|
||||
@@ -144,7 +157,7 @@ SocketAdmin.categories.update = function(socket, data, callback) {
|
||||
return callback(new Error('invalid data'));
|
||||
}
|
||||
|
||||
admin.categories.update(data, socket, callback);
|
||||
categories.update(data, callback);
|
||||
};
|
||||
|
||||
SocketAdmin.categories.search = function(socket, data, callback) {
|
||||
|
||||
@@ -7,22 +7,18 @@ var async = require('async'),
|
||||
topics = require('./../topics'),
|
||||
categories = require('./../categories'),
|
||||
plugins = require('./../plugins'),
|
||||
events = require('./../events'),
|
||||
groups = require('./../groups');
|
||||
|
||||
|
||||
module.exports = function(User) {
|
||||
|
||||
User.delete = function(adminUid, uid, callback) {
|
||||
User.delete = function(uid, callback) {
|
||||
async.waterfall([
|
||||
function(next) {
|
||||
deletePosts(uid, next);
|
||||
},
|
||||
function(next) {
|
||||
deleteTopics(uid, next);
|
||||
},
|
||||
function(next) {
|
||||
events.logAdminUserDelete(adminUid, uid, next);
|
||||
}
|
||||
], function(err) {
|
||||
if (err) {
|
||||
|
||||
Reference in New Issue
Block a user