mirror of https://github.com/calzoneman/sync.git
[ACP] Allow searching users by email.
This commit is contained in:
parent
d23b5278b1
commit
93ef067b8c
20
src/acp.js
20
src/acp.js
|
@ -91,14 +91,26 @@ function handleGlobalBanDelete(user, data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleListUsers(user, data) {
|
function handleListUsers(user, data) {
|
||||||
var name = data.name;
|
var query = data.query;
|
||||||
if (typeof name !== "string") {
|
if (typeof query !== "string") {
|
||||||
name = "";
|
query = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
var field = data.field;
|
||||||
|
if (typeof field !== "string") {
|
||||||
|
field = "name";
|
||||||
}
|
}
|
||||||
|
|
||||||
var fields = ["id", "name", "global_rank", "email", "ip", "time"];
|
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) {
|
if (err) {
|
||||||
user.socket.emit("errMessage", {
|
user.socket.emit("errMessage", {
|
||||||
msg: err
|
msg: err
|
||||||
|
|
|
@ -51,29 +51,16 @@ module.exports = {
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search for a user by name
|
* Search for a user by any field
|
||||||
*/
|
*/
|
||||||
search: function (name, fields, callback) {
|
search: function (where, like, 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Don't allow search to return password hashes
|
// Don't allow search to return password hashes
|
||||||
if (fields.indexOf("password") !== -1) {
|
if (fields.indexOf("password") !== -1) {
|
||||||
fields.splice(fields.indexOf("password"));
|
fields.splice(fields.indexOf("password"));
|
||||||
}
|
}
|
||||||
|
|
||||||
db.query("SELECT " + fields.join(",") + " FROM `users` WHERE name LIKE ?",
|
db.query(`SELECT ${fields.join(",")} FROM \`users\` WHERE ${where} LIKE ?`,
|
||||||
["%"+name+"%"],
|
["%"+like+"%"],
|
||||||
function (err, rows) {
|
function (err, rows) {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err, true);
|
callback(err, true);
|
||||||
|
|
|
@ -69,10 +69,12 @@ html(lang="en")
|
||||||
button#acp-gban-submit.btn.btn-danger Add ban
|
button#acp-gban-submit.btn.btn-danger Add ban
|
||||||
#acp-user-lookup.acp-panel.col-md-12(style="display: none")
|
#acp-user-lookup.acp-panel.col-md-12(style="display: none")
|
||||||
h3 Users
|
h3 Users
|
||||||
.input-group(style="max-width: 25%")
|
.input-group(style="max-width: 50%")
|
||||||
input#acp-ulookup-name.form-control(type="text")
|
input#acp-ulookup-query.form-control(type="text")
|
||||||
span.input-group-btn
|
span.input-group-btn
|
||||||
button#acp-ulookup-btn.btn.btn-default Search
|
button#acp-ulookup-btn-name.btn.btn-default(data-field="name") Search Name
|
||||||
|
span.input-group-btn
|
||||||
|
button#acp-ulookup-btn-email.btn.btn-default(data-field="email") Search Email
|
||||||
table.table.table-bordered.table-striped(style="margin-top: 20px")
|
table.table.table-bordered.table-striped(style="margin-top: 20px")
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
|
|
|
@ -135,7 +135,7 @@ socket.on("acp-gbanlist", function (bans) {
|
||||||
/* User listing */
|
/* User listing */
|
||||||
(function () {
|
(function () {
|
||||||
var doSearch = function () {
|
var doSearch = function () {
|
||||||
if ($("#acp-ulookup-name").val().trim() === "") {
|
if ($("#acp-ulookup-query").val().trim() === "") {
|
||||||
if (!confirm("You are about to list the entire users table. " +
|
if (!confirm("You are about to list the entire users table. " +
|
||||||
"This table might be very large and take a long " +
|
"This table might be very large and take a long " +
|
||||||
"time to query. Continue?")) {
|
"time to query. Continue?")) {
|
||||||
|
@ -143,14 +143,16 @@ socket.on("acp-gbanlist", function (bans) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
socket.emit("acp-list-users", {
|
socket.emit("acp-list-users", {
|
||||||
name: $("#acp-ulookup-name").val()
|
query: $("#acp-ulookup-query").val(),
|
||||||
|
field: $(this).data()["field"]
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
$("#acp-ulookup-btn").click(doSearch);
|
$("#acp-ulookup-btn-name").click(doSearch);
|
||||||
$("#acp-ulookup-name").keyup(function (ev) {
|
$("#acp-ulookup-btn-email").click(doSearch);
|
||||||
|
$("#acp-ulookup-query").keyup(function (ev) {
|
||||||
if (ev.keyCode === 13) {
|
if (ev.keyCode === 13) {
|
||||||
doSearch();
|
$("#acp-ulookup-btn-name").click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
Loading…
Reference in New Issue