Admin/users (#8762)

* feat: wip admin/users

* feat: more work

* feat: more fixes

* feat: #8662, verified/unverified user groups

* feat: add filter

* feat: change user search to use filters array

* refactor: remove unused search call

* fix: tests

* fix: cant join system groups

* fix: upgrade script
This commit is contained in:
Barış Soner Uşaklı
2020-10-13 22:42:50 -04:00
committed by GitHub
parent bfaeb27c11
commit 872bacf1c4
47 changed files with 612 additions and 569 deletions

View File

@@ -21,7 +21,7 @@ usersController.index = async function (req, res, next) {
flagged: usersController.getFlaggedUsers,
};
if (req.query.term) {
if (req.query.query) {
await usersController.search(req, res, next);
} else if (sectionToController[section]) {
await sectionToController[section](req, res, next);
@@ -35,19 +35,25 @@ usersController.search = async function (req, res) {
privileges.global.can('search:users', req.uid),
user.isPrivileged(req.uid),
]);
if (!allowed || ((req.query.searchBy === 'ip' || req.query.searchBy === 'email' || req.query.bannedOnly === 'true' || req.query.flaggedOnly === 'true') && !isPrivileged)) {
let filters = req.query.filters || [];
filters = Array.isArray(filters) ? filters : [filters];
if (!allowed ||
((
req.query.searchBy === 'ip' ||
req.query.searchBy === 'email' ||
filters.includes('banned') ||
filters.includes('flagged')
) && !isPrivileged)
) {
throw new Error('[[error:no-privileges]]');
}
const [searchData, isAdminOrGlobalMod] = await Promise.all([
user.search({
query: req.query.term,
query: req.query.query,
searchBy: req.query.searchBy || 'username',
page: req.query.page || 1,
sortBy: req.query.sortBy || 'joindate',
onlineOnly: req.query.onlineOnly === 'true',
bannedOnly: req.query.bannedOnly === 'true',
flaggedOnly: req.query.flaggedOnly === 'true',
filters: filters,
}),
user.isAdminOrGlobalMod(req.uid),
]);