Add ability to filter users by state

This commit is contained in:
Johannes Zellner
2022-02-07 16:57:00 +01:00
parent e3a0a9e5dc
commit d5481342ed
2 changed files with 16 additions and 3 deletions

View File

@@ -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} `;