"use strict"; var groups = require('../groups'), meta = require('../meta'), plugins = require('../plugins'), user = require('../user'), topics = require('../topics'), categories = require('../categories'), CategoryTools = require('../categoryTools'), logger = require('../logger'), admin = { user: require('../admin/user'), categories: require('../admin/categories') }, async = require('async'), winston = require('winston'), SocketAdmin = {}; SocketAdmin.before = function(socket, next) { // Verify administrative privileges user.isAdministrator(socket.uid, function(err, isAdmin) { if (isAdmin) { next(); } else { winston.warn('[socket.io] Call to admin method blocked (accessed by uid ' + socket.uid + ')'); } }); }; /* Topics */ SocketAdmin.topics = {}; SocketAdmin.topics.getMore = function(socket, data, callback) { topics.getAllTopics(data.limit, data.after, function(err, topics) { callback(JSON.stringify(topics)); }); }; /* User */ SocketAdmin.user = {}; SocketAdmin.user.makeAdmin = function(socket, theirid) { admin.user.makeAdmin(socket.uid, theirid, socket); }; SocketAdmin.user.removeAdmin = function(socket, theirid) { admin.user.removeAdmin(socket.uid, theirid, socket); }; SocketAdmin.user.createUser = function(socket, user, callback) { admin.user.createUser(socket.uid, user, callback); }; SocketAdmin.user.banUser = function(socket, theirid) { admin.user.banUser(socket.uid, theirid, socket, function(isBanned) { if(isBanned) { if(socket.userSockets[theirid]) { for(var i=0; i