diff --git a/public/language/en-GB/admin/manage/users.json b/public/language/en-GB/admin/manage/users.json index f1651a814b..5b68fcdc91 100644 --- a/public/language/en-GB/admin/manage/users.json +++ b/public/language/en-GB/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "Banned", "pills.search": "User Search", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "search.username": "By User Name", "search.username-placeholder": "Enter a username to search", "search.email": "By Email", diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js index 8c22a65720..b6c7b7aa03 100644 --- a/public/src/admin/manage/users.js +++ b/public/src/admin/manage/users.js @@ -306,7 +306,7 @@ define('admin/manage/users', ['translator', 'benchpress'], function (translator, var timeoutId = 0; - $('#search-user-name, #search-user-email, #search-user-ip').on('keyup', function () { + $('#search-user-uid, #search-user-name, #search-user-email, #search-user-ip').on('keyup', function () { if (timeoutId !== 0) { clearTimeout(timeoutId); timeoutId = 0; diff --git a/src/socket.io/admin/user.js b/src/socket.io/admin/user.js index 3fb4dfb9ff..d8d9a0f282 100644 --- a/src/socket.io/admin/user.js +++ b/src/socket.io/admin/user.js @@ -183,7 +183,11 @@ User.search = function (socket, data, callback) { var searchData; async.waterfall([ function (next) { - user.search({ query: data.query, searchBy: data.searchBy, uid: socket.uid }, next); + user.search({ + query: data.query, + searchBy: data.searchBy, + uid: socket.uid, + }, next); }, function (_searchData, next) { searchData = _searchData; diff --git a/src/user/search.js b/src/user/search.js index 37549232cd..198b027266 100644 --- a/src/user/search.js +++ b/src/user/search.js @@ -14,17 +14,19 @@ module.exports = function (User) { var uid = data.uid || 0; var paginate = data.hasOwnProperty('paginate') ? data.paginate : true; - if (searchBy === 'ip') { - return searchByIP(query, uid, callback); - } - var startTime = process.hrtime(); var searchResult = {}; async.waterfall([ function (next) { - var searchMethod = data.findUids || findUids; - searchMethod(query, searchBy, data.hardCap, next); + if (searchBy === 'ip') { + searchByIP(query, next); + } else if (searchBy === 'uid') { + next(null, [query]); + } else { + var searchMethod = data.findUids || findUids; + searchMethod(query, searchBy, data.hardCap, next); + } }, function (uids, next) { filterAndSortUids(uids, data, next); @@ -153,20 +155,7 @@ module.exports = function (User) { } } - function searchByIP(ip, uid, callback) { - var start = process.hrtime(); - async.waterfall([ - function (next) { - db.getSortedSetRevRange('ip:' + ip + ':uid', 0, -1, next); - }, - function (uids, next) { - User.getUsers(uids, uid, next); - }, - function (users, next) { - var diff = process.hrtime(start); - var timing = ((diff[0] * 1e3) + (diff[1] / 1e6)).toFixed(1); - next(null, { timing: timing, users: users }); - }, - ], callback); + function searchByIP(ip, callback) { + db.getSortedSetRevRange('ip:' + ip + ':uid', 0, -1, callback); } }; diff --git a/src/views/admin/manage/users.tpl b/src/views/admin/manage/users.tpl index bebded1a5e..3eca4f998d 100644 --- a/src/views/admin/manage/users.tpl +++ b/src/views/admin/manage/users.tpl @@ -49,6 +49,9 @@