Add ability to filter users by state
This commit is contained in:
13
src/users.js
13
src/users.js
@@ -428,8 +428,10 @@ async function list() {
|
||||
return results;
|
||||
}
|
||||
|
||||
async function listPaged(search, page, perPage) {
|
||||
// if active is null then both active and inactive users are listed
|
||||
async function listPaged(search, active, page, perPage) {
|
||||
assert(typeof search === 'string' || search === null);
|
||||
assert(typeof active === 'boolean' || active === null);
|
||||
assert.strictEqual(typeof page, 'number');
|
||||
assert.strictEqual(typeof perPage, 'number');
|
||||
|
||||
@@ -437,11 +439,20 @@ async function listPaged(search, page, perPage) {
|
||||
|
||||
if (search) {
|
||||
query += ' WHERE ';
|
||||
query += '(';
|
||||
query += '(LOWER(users.username) LIKE ' + mysql.escape(`%${search.toLowerCase()}%`) + ')';
|
||||
query += ' OR ';
|
||||
query += '(LOWER(users.email) LIKE ' + mysql.escape(`%${search.toLowerCase()}%`) + ')';
|
||||
query += ' OR ';
|
||||
query += '(LOWER(users.displayName) LIKE ' + mysql.escape(`%${search.toLowerCase()}%`) + ')';
|
||||
query += ')';
|
||||
}
|
||||
|
||||
if (active !== null) {
|
||||
if (search) query += ' AND ';
|
||||
else query += ' WHERE ';
|
||||
|
||||
query += 'users.active' + (!active ? ' IS NOT ' : ' IS ') + 'TRUE';
|
||||
}
|
||||
|
||||
query += ` GROUP BY users.id ORDER BY users.username ASC LIMIT ${(page-1)*perPage},${perPage} `;
|
||||
|
||||
Reference in New Issue
Block a user