Shun Miyazawa 3 лет назад
Родитель
Сommit
91f53bc083
2 измененных файлов с 12 добавлено и 12 удалено
  1. 6 2
      packages/app/src/server/models/user.js
  2. 6 10
      packages/app/src/server/routes/apiv3/users.js

+ 6 - 2
packages/app/src/server/models/user.js

@@ -715,8 +715,12 @@ module.exports = function(crowi) {
     return users;
     return users;
   };
   };
 
 
-  userSchema.statics.findUserByUsernameRegex = async function(username, limit) {
-    return this.find({ username: { $regex: username, $options: 'i' } }).limit(limit);
+  userSchema.statics.findUserByUsernameRegex = async function(username, limit, additionalQuery = undefined) {
+    const result = this.find({ username: { $regex: username, $options: 'i' } });
+    if (additionalQuery != null) {
+      result.and(additionalQuery);
+    }
+    return result.limit(limit);
   };
   };
 
 
   class UserUpperLimitException {
   class UserUpperLimitException {

+ 6 - 10
packages/app/src/server/routes/apiv3/users.js

@@ -946,23 +946,19 @@ 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 = {};
-
     try {
     try {
+      const data = {};
+
       if (stringToBoolean(req.query.isIncludeActiveUsernames)) {
       if (stringToBoolean(req.query.isIncludeActiveUsernames)) {
-        const activeUsers = await User.find({
-          status: User.STATUS_ACTIVE,
-          username: { $regex: q, $options: 'i' },
-        }).limit(limit);
+        const additionalQuery = { status: User.STATUS_ACTIVE };
+        const activeUsers = await User.findUserByUsernameRegex(q, limit, additionalQuery);
         const activeUsernames = activeUsers.map(user => user.username);
         const activeUsernames = activeUsers.map(user => user.username);
         Object.assign(data, { activeUsernames });
         Object.assign(data, { activeUsernames });
       }
       }
 
 
       if (stringToBoolean(req.query.isIncludeInactiveUsernames)) {
       if (stringToBoolean(req.query.isIncludeInactiveUsernames)) {
-        const inactiveUsers = await User.find({
-          status: { $nin: [User.STATUS_ACTIVE, User.STATUS_DELETED] },
-          username: { $regex: q, $options: 'i' },
-        }).limit(limit);
+        const additionalQuery = { status: { $nin: [User.STATUS_ACTIVE, User.STATUS_DELETED] } };
+        const inactiveUsers = await User.findUserByUsernameRegex(q, limit, additionalQuery);
         const inactiveUsernames = inactiveUsers.map(user => user.username);
         const inactiveUsernames = inactiveUsers.map(user => user.username);
         Object.assign(data, { inactiveUsernames });
         Object.assign(data, { inactiveUsernames });
       }
       }