Browse Source

use username for search user

ryoji-s 2 years ago
parent
commit
66d6449f94
1 changed files with 15 additions and 27 deletions
  1. 15 27
      apps/app/src/server/service/page.ts

+ 15 - 27
apps/app/src/server/service/page.ts

@@ -46,7 +46,7 @@ const debug = require('debug')('growi:services:page');
 
 const logger = loggerFactory('growi:services:page');
 const {
-  isTrashPage, isTopPage, omitDuplicateAreaPageFromPages,
+  isTrashPage, isTopPage, omitDuplicateAreaPageFromPages, getUsernameByPath,
   canMoveByPath, isUsersTopPage, isUsersHomepage, isUsersProtectedPages, hasSlash, generateChildrenRegExp,
 } = pagePathUtils;
 
@@ -177,13 +177,9 @@ class PageService {
       }
 
       const User = mongoose.model('User');
-      const creator = await User.findById<IUserHasId | null>(creatorId);
-
-      if (creator == null) {
-        throw new Error('user homepage creator document is not found.');
-      }
-
-      if (creator.status !== USER_STATUS.DELETED) {
+      const username = getUsernameByPath(path);
+      const userHomepageOwner = await User.findOne<IUserHasId | null>({ username });
+      if (userHomepageOwner != null) {
         return false;
       }
     }
@@ -208,13 +204,9 @@ class PageService {
       }
 
       const User = mongoose.model('User');
-      const creator = await User.findById<IUserHasId | null>(creatorId);
-
-      if (creator == null) {
-        throw new Error('user homepage creator document is not found.');
-      }
-
-      if (creator.status !== USER_STATUS.DELETED) {
+      const username = getUsernameByPath(path);
+      const userHomepageOwner = await User.findOne<IUserHasId | null>({ username });
+      if (userHomepageOwner != null) {
         return false;
       }
     }
@@ -1450,12 +1442,10 @@ class PageService {
         throw new Error('Page is not deletable.');
       }
 
-      if (page.creator == null) {
-        throw new Error('user homepage creator is null.');
-      }
-
-      const populatedPage = await page.populate('creator');
-      if (populatedPage.creator.status !== USER_STATUS.DELETED) {
+      const User = mongoose.model('User');
+      const username = getUsernameByPath(page.path);
+      const userHomepageOwner = User.findOne<IUserHasId | null>({ username })
+      if (userHomepageOwner != null) {
         throw new Error('Page is not deletable.');
       }
     }
@@ -2468,16 +2458,14 @@ class PageService {
     if (isUsersHomepage(page.path)) {
       const isUsersHomepageDeletionEnabled = configManager.getConfig('crowi', 'security:user-homepage-deletion:isEnabled');
 
-      if (page.creator == null) {
-        throw new Error('user homepage creator is null.');
-      }
-
       if (!isUsersHomepageDeletionEnabled) {
         isDeletable = false;
       }
       else {
-        const populatedPage = await page.populate('creator');
-        if (populatedPage.creator.status !== USER_STATUS.DELETED) {
+        const User = mongoose.model('User');
+        const username = getUsernameByPath(page.path);
+        const userHomepageOwner = User.findOne<IUserHasId | null>({ username })
+        if (userHomepageOwner != null) {
           isDeletable = false;
         }
       }