Browse Source

success to validate showing user infomation by the status of the users

kaori 5 years ago
parent
commit
47c1f94665
1 changed files with 48 additions and 12 deletions
  1. 48 12
      src/server/routes/apiv3/users.js

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

@@ -182,19 +182,55 @@ module.exports = (crowi) => {
     };
     };
 
 
     try {
     try {
+
+      // ①  admin & forceIncludeAttributesにemailが入っている→全員メアドでも引っかかる
+      const patern1 = {
+        $and: [
+          { status: { $in: statusNoList } },
+          {
+            $or: [
+              { name: { $in: searchWord } },
+              { username: { $in: searchWord } },
+              { email: { $in: searchWord } },
+            ],
+          },
+        ],
+      };
+
+      // ② (admin & forceIncludeAttributesにemailが入っていない) or nomalユーザー→isEmailPublishedがtrueなユーザーのみメアドでも引っかかる
+      const patern2 = {
+        $and: [
+          { status: { $in: statusNoList } },
+          { isEmailPublished: true },
+          {
+            $or: [
+              { name: { $in: searchWord } },
+              { username: { $in: searchWord } },
+              { email: { $in: searchWord } },
+            ],
+          },
+        ],
+      };
+
+      // ③ 未loginユーザー→メアドでは引っかからない
+      const patern3 = {
+        $and: [
+          { status: { $in: statusNoList } },
+          { isEmailPublished: true },
+          {
+            $or: [
+              { name: { $in: searchWord } },
+              { username: { $in: searchWord } },
+            ],
+          },
+        ],
+      };
+
+
+      const query = patern3;
+
       const paginateResult = await User.paginate(
       const paginateResult = await User.paginate(
-        {
-          $and: [
-            { status: { $in: statusNoList } },
-            {
-              $or: [
-                { name: { $in: searchWord } },
-                { username: { $in: searchWord } },
-                { email: { $in: searchWord } },
-              ],
-            },
-          ],
-        },
+        query,
         {
         {
           sort: sortOutput,
           sort: sortOutput,
           page,
           page,