Shun Miyazawa 3 лет назад
Родитель
Сommit
f7d752b8ff
1 измененных файлов с 31 добавлено и 14 удалено
  1. 31 14
      packages/app/src/server/routes/apiv3/users.js

+ 31 - 14
packages/app/src/server/routes/apiv3/users.js

@@ -124,6 +124,9 @@ module.exports = (crowi) => {
   validator.usernames = [
   validator.usernames = [
     query('q').isString().withMessage('q is required'),
     query('q').isString().withMessage('q is required'),
     query('limit').optional().isInt({ max: 20 }).withMessage('You should set less than 100 or not to set limit.'),
     query('limit').optional().isInt({ max: 20 }).withMessage('You should set less than 100 or not to set limit.'),
+    query('isIncludeActiveUsernames').optional().isBoolean(),
+    query('isIncludeInactiveUsernames').optional().isBoolean(),
+    query('isIncludeActivitySnapshotUsernames').optional().isBoolean(),
   ];
   ];
 
 
   const sendEmailByUserList = async(userList) => {
   const sendEmailByUserList = async(userList) => {
@@ -942,22 +945,36 @@ module.exports = (crowi) => {
     const q = req.query.q;
     const q = req.query.q;
     const limit = req.query.limit || 10;
     const limit = req.query.limit || 10;
 
 
+    const data = {};
+    console.log(req.query);
+
     try {
     try {
-      const activeUsers = await User.find({
-        status: User.STATUS_ACTIVE,
-        username: { $regex: q, $options: 'i' },
-      }).limit(limit);
-
-      const inactiveUsers = await User.find({
-        status: { $nin: [User.STATUS_ACTIVE, User.STATUS_DELETED] },
-        username: { $regex: q, $options: 'i' },
-      }).limit(limit);
-
-      const userActivies = await Activity.find({
-        'snapshot.username': { $regex: q, $options: 'i' },
-      });
+      if (req.query.isIncludeActiveUsernames) {
+        const activeUsers = await User.find({
+          status: User.STATUS_ACTIVE,
+          username: { $regex: q, $options: 'i' },
+        }).limit(limit);
+        const activeUsernames = activeUsers.map(user => user.username);
+        Object.assign(data, { activeUsernames });
+      }
+
+      if (req.query.isIncludeInactiveUsernames) {
+        const inactiveUsers = await User.find({
+          status: { $nin: [User.STATUS_ACTIVE, User.STATUS_DELETED] },
+          username: { $regex: q, $options: 'i' },
+        }).limit(limit);
+        const inactiveUsernames = inactiveUsers.map(user => user.username);
+        Object.assign(data, { inactiveUsernames });
+      }
+
+      if (req.query.isIncludeActivitySnapshotUsernames) {
+        const userActivies = await Activity.find({
+          'snapshot.username': { $regex: q, $options: 'i' },
+        });
+        Object.assign(data, { userActivies });
+      }
 
 
-      return res.apiv3({ activeUsers, inactiveUsers, userActivies });
+      return res.apiv3({ data });
     }
     }
     catch (err) {
     catch (err) {
       logger.error('failed to get usernames', err);
       logger.error('failed to get usernames', err);