diff --git a/src/database/redis.js b/src/database/redis.js index 8a5578e439..a5c8822b60 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -115,7 +115,7 @@ } } - module.searchRemove = function(key, id) { + module.searchRemove = function(key, id, callback) { if(key === 'post') { postSearch.remove(id); } else if(key === 'topic') { @@ -123,6 +123,10 @@ } else if(key === 'user') { userSearch.remove(id); } + + if (typeof callback === 'function') { + callback() + } } module.flushdb = function(callback) { diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index f95d03a571..80125df302 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -77,16 +77,10 @@ SocketAdmin.user.banUser = function(theirid, sessionData) { }; SocketAdmin.user.unbanUser = function(theirid, sessionData) { - if (sessionData.uid && sessionData.uid > 0) { - admin.user.unbanUser(sessionData.uid, theirid, sessionData.socket); - } + admin.user.unbanUser(sessionData.uid, theirid, sessionData.socket); }; SocketAdmin.user.search = function(username, callback, sessionData) { - if (!(sessionData.uid && sessionData.uid > 0)) { - return callback(); - } - user.search(username, function(data) { function isAdmin(userData, next) { user.isAdministrator(userData.uid, function(err, isAdmin) { @@ -124,33 +118,25 @@ SocketAdmin.categories.update = function(data, sessionData) { }; SocketAdmin.categories.search = function(username, cid, callback, sessionData) { - if (sessionData.uid && sessionData.uid > 0) { - user.search(username, function(data) { - async.map(data, function(userObj, next) { - CategoryTools.privileges(cid, userObj.uid, function(err, privileges) { - if (!err) { - userObj.privileges = privileges; - } else { - winston.error('[socket api:admin.categories.search] Could not retrieve permissions'); - } - - next(null, userObj); - }); - }, function(err, data) { - if (!callback) { - sessionData.socket.emit('api:admin.categories.search', data); + user.search(username, function(data) { + async.map(data, function(userObj, next) { + CategoryTools.privileges(cid, userObj.uid, function(err, privileges) { + if (!err) { + userObj.privileges = privileges; } else { - callback(null, data); + winston.error('[socket api:admin.categories.search] Could not retrieve permissions'); } + + next(null, userObj); }); + }, function(err, data) { + if (!callback) { + sessionData.socket.emit('api:admin.categories.search', data); + } else { + callback(null, data); + } }); - } else { - if (!callback) { - sessionData.socket.emit('api:admin.user.search', null); - } else { - callback(); - } - } + }); }; SocketAdmin.categories.setPrivilege = function(cid, uid, privilege, set, callback) { diff --git a/src/user.js b/src/user.js index 91c901c5a6..b66c923f75 100644 --- a/src/user.js +++ b/src/user.js @@ -309,10 +309,8 @@ var bcrypt = require('bcrypt'), User.setUserField(uid, 'username', data.username); db.deleteObjectField('username:uid', userData.username); db.setObjectField('username:uid', data.username, uid); - db.searchRemove('user', uid, function() { - db.searchIndex('user', data.username, uid); - }); events.logUsernameChange(uid, userData.username, data.username); + User.reIndexUser(uid, data.username); } if(userslug !== userData.userslug) { @@ -451,19 +449,20 @@ var bcrypt = require('bcrypt'), return callback(err, null); } - function reIndexUser(uid, username) { - db.searchRemove('user', uid, function() { - db.searchIndex('user', username, uid); - }); - } - for (var i = 0; i < usersData.length; ++i) { - reIndexUser(usersData[i].uid, usersData[i].username); + User.reIndexUser(usersData[i].uid, usersData[i].username); } + callback(null, 1); }); }; + User.reIndexUser = function(uid, username) { + db.searchRemove('user', uid, function() { + db.searchIndex('user', username, uid); + }); + }; + // thanks to @akhoury User.getUsersCSV = function(callback) { var csvContent = "";