[ACP] Allow searching users by email.

This commit is contained in:
Xaekai 2017-05-24 04:10:44 -07:00
parent d23b5278b1
commit 93ef067b8c
4 changed files with 32 additions and 29 deletions

View file

@ -91,14 +91,26 @@ function handleGlobalBanDelete(user, data) {
}
function handleListUsers(user, data) {
var name = data.name;
if (typeof name !== "string") {
name = "";
var query = data.query;
if (typeof query !== "string") {
query = "";
}
var field = data.field;
if (typeof field !== "string") {
field = "name";
}
var fields = ["id", "name", "global_rank", "email", "ip", "time"];
db.users.search(name, fields, function (err, users) {
if(!fields.includes(field)){
user.socket.emit("errMessage", {
msg: `The field "${field}" doesn't exist or isn't searchable.`
});
return;
}
db.users.search(field, query, fields, function (err, users) {
if (err) {
user.socket.emit("errMessage", {
msg: err

View file

@ -51,29 +51,16 @@ module.exports = {
},
/**
* Search for a user by name
* Search for a user by any field
*/
search: function (name, fields, callback) {
/* This bit allows it to accept varargs
Function can be called as (name, callback) or
(name, fields, callback)
*/
if (typeof callback !== "function") {
if (typeof fields === "function") {
callback = fields;
fields = ["name"];
} else {
return;
}
}
search: function (where, like, fields, callback) {
// Don't allow search to return password hashes
if (fields.indexOf("password") !== -1) {
fields.splice(fields.indexOf("password"));
}
db.query("SELECT " + fields.join(",") + " FROM `users` WHERE name LIKE ?",
["%"+name+"%"],
db.query(`SELECT ${fields.join(",")} FROM \`users\` WHERE ${where} LIKE ?`,
["%"+like+"%"],
function (err, rows) {
if (err) {
callback(err, true);