Sfoglia il codice sorgente

Merge pull request #3227 from weseek/imprv/7424-return-resluts-for-each-user

Imprv/7424 return resluts for each user
Yuki Takei 5 anni fa
parent
commit
a82d3e1a5c
1 ha cambiato i file con 29 aggiunte e 12 eliminazioni
  1. 29 12
      src/server/routes/apiv3/users.js

+ 29 - 12
src/server/routes/apiv3/users.js

@@ -181,20 +181,37 @@ module.exports = (crowi) => {
       [sort]: (sortOrder === 'desc') ? -1 : 1,
       [sort]: (sortOrder === 'desc') ? -1 : 1,
     };
     };
 
 
-    try {
-      const paginateResult = await User.paginate(
+    const orConditions = [
+      { name: { $in: searchWord } },
+      { username: { $in: searchWord } },
+    ];
+
+    const query = {
+      $and: [
+        { status: { $in: statusNoList } },
         {
         {
-          $and: [
-            { status: { $in: statusNoList } },
-            {
-              $or: [
-                { name: { $in: searchWord } },
-                { username: { $in: searchWord } },
-                { email: { $in: searchWord } },
-              ],
-            },
-          ],
+          $or: orConditions,
         },
         },
+      ],
+    };
+
+    try {
+      if (req.user != null) {
+        orConditions.push(
+          {
+            $and: [
+              { isEmailPublished: true },
+              { email: { $in: searchWord } },
+            ],
+          },
+        );
+      }
+      if (forceIncludeAttributes.includes('email')) {
+        orConditions.push({ email: { $in: searchWord } });
+      }
+
+      const paginateResult = await User.paginate(
+        query,
         {
         {
           sort: sortOutput,
           sort: sortOutput,
           page,
           page,