ryoji-s 2 years ago
parent
commit
d503010b46
1 changed files with 24 additions and 26 deletions
  1. 24 26
      apps/app/src/server/routes/apiv3/pages.js

+ 24 - 26
apps/app/src/server/routes/apiv3/pages.js

@@ -931,21 +931,20 @@ module.exports = (crowi) => {
 
       const isUsersHomepageDeletionEnabled = configManager.getConfig('crowi', 'security:user-homepage-deletion:isEnabled');
       if (isUsersHomepageDeletionEnabled) {
-        const usernameList = userHomepages.map(page => getUsernameByPath(page.path));
-
         const User = mongoose.model('User');
+        const usernameList = userHomepages.map(page => getUsernameByPath(page.path));
         const existingUsernames = await User.distinct('username', { username: { $in: usernameList } });
-        const nonExistingUsernames = usernameList.filter(username => !existingUsernames.includes(username));
-
-        for (const page of userHomepages) {
-          const pageUsername = getUsernameByPath(page.path);
-          if (nonExistingUsernames.includes(pageUsername)) {
-            const canDelete = page.isEmpty || crowi.pageService.canDeleteCompletely(page.path, page.creator, req.user, isRecursively);
-            if (canDelete) {
-              pagesCanBeDeleted.push(page);
-            }
-          }
-        }
+
+        const isUserHomepageDeletable = (page) => {
+          const username = getUsernameByPath(page.path);
+          if (existingUsernames.includes(username)) return false;
+
+          return page.isEmpty || crowi.pageService.canDeleteCompletely(page.path, page.creator, req.user, isRecursively);
+        };
+
+        const deletableUserHomepages = userHomepages.filter(page => isUserHomepageDeletable(page));
+
+        pagesCanBeDeleted.push(...deletableUserHomepages);
       }
     }
     /*
@@ -956,21 +955,20 @@ module.exports = (crowi) => {
 
       const isUsersHomepageDeletionEnabled = configManager.getConfig('crowi', 'security:user-homepage-deletion:isEnabled');
       if (isUsersHomepageDeletionEnabled) {
-        const usernameList = userHomepages.map(page => getUsernameByPath(page.path));
-
         const User = mongoose.model('User');
+        const usernameList = userHomepages.map(page => getUsernameByPath(page.path));
         const existingUsernames = await User.distinct('username', { username: { $in: usernameList } });
-        const nonExistingUsernames = usernameList.filter(username => !existingUsernames.includes(username));
-
-        for (const page of userHomepages) {
-          const pageUsername = getUsernameByPath(page.path);
-          if (nonExistingUsernames.includes(pageUsername)) {
-            const canDelete = page.isEmpty || crowi.pageService.canDelete(page.path, page.creator, req.user, isRecursively);
-            if (canDelete) {
-              pagesCanBeDeleted.push(page);
-            }
-          }
-        }
+
+        const isUserHomepageDeletable = (page) => {
+          const username = getUsernameByPath(page.path);
+          if (existingUsernames.includes(username)) return false;
+
+          return page.isEmpty || crowi.pageService.canDelete(page.path, page.creator, req.user, isRecursively);
+        };
+
+        const deletableUserHomepages = userHomepages.filter(page => isUserHomepageDeletable(page));
+
+        pagesCanBeDeleted.push(...deletableUserHomepages);
       }
     }