mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-27 01:39:53 +01:00
feat: allow passing groupName to user.search
This commit is contained in:
@@ -54,16 +54,14 @@ module.exports = function (Groups) {
|
|||||||
return { users: users };
|
return { users: users };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const results = await user.search({
|
||||||
|
...data,
|
||||||
|
paginate: false,
|
||||||
|
hardCap: -1,
|
||||||
|
groupName: data.groupName,
|
||||||
|
});
|
||||||
|
|
||||||
data.paginate = false;
|
const uids = results.users.map(user => user && user.uid);
|
||||||
const results = await user.search(data);
|
|
||||||
|
|
||||||
let uids = results.users.map(user => user && user.uid);
|
|
||||||
const isMembers = await Groups.isMembers(uids, data.groupName);
|
|
||||||
|
|
||||||
results.users = results.users.filter((user, index) => isMembers[index]);
|
|
||||||
|
|
||||||
uids = results.users.map(user => user && user.uid);
|
|
||||||
const isOwners = await Groups.ownership.isOwners(uids, data.groupName);
|
const isOwners = await Groups.ownership.isOwners(uids, data.groupName);
|
||||||
|
|
||||||
results.users.forEach(function (user, index) {
|
results.users.forEach(function (user, index) {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const _ = require('lodash');
|
|||||||
const meta = require('../meta');
|
const meta = require('../meta');
|
||||||
const plugins = require('../plugins');
|
const plugins = require('../plugins');
|
||||||
const db = require('../database');
|
const db = require('../database');
|
||||||
|
const groups = require('../groups');
|
||||||
const utils = require('../utils');
|
const utils = require('../utils');
|
||||||
|
|
||||||
module.exports = function (User) {
|
module.exports = function (User) {
|
||||||
@@ -84,13 +85,17 @@ module.exports = function (User) {
|
|||||||
fields.push('flags');
|
fields.push('flags');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (data.groupName) {
|
||||||
|
const isMembers = await groups.isMembers(uids, data.groupName);
|
||||||
|
uids = uids.filter((uid, index) => isMembers[index]);
|
||||||
|
}
|
||||||
|
|
||||||
if (!fields.length) {
|
if (!fields.length) {
|
||||||
return uids;
|
return uids;
|
||||||
}
|
}
|
||||||
|
|
||||||
fields.push('uid');
|
fields.push('uid');
|
||||||
let userData = await User.getUsersFields(uids, fields);
|
let userData = await User.getUsersFields(uids, fields);
|
||||||
userData = userData.filter(Boolean);
|
|
||||||
if (data.onlineOnly) {
|
if (data.onlineOnly) {
|
||||||
userData = userData.filter(user => user.status !== 'offline' && (Date.now() - user.lastonline < 300000));
|
userData = userData.filter(user => user.status !== 'offline' && (Date.now() - user.lastonline < 300000));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user