ryoji-s 2 лет назад
Родитель
Сommit
85730c2143

+ 1 - 2
apps/app/src/server/routes/apiv3/pages.js

@@ -242,8 +242,7 @@ module.exports = (crowi) => {
   }
 
   const addDeletableUserHomepages = async(canDeleteFunction, userHomepages, pagesCanBeDeleted) => {
-    const isUsersHomepageDeletionEnabled = configManager.getConfig('crowi', 'security:user-homepage-deletion:isEnabled');
-    if (isUsersHomepageDeletionEnabled) {
+    if (this.canDeleteUserHomepageByConfig()) {
       const User = mongoose.model('User');
       const usernames = userHomepages.map(page => getUsernameByPath(page.path));
       const existingUsernames = await User.distinct('username', { username: { $in: usernames } });

+ 4 - 4
apps/app/src/server/routes/page.js

@@ -766,8 +766,8 @@ module.exports = function(crowi, app) {
           return res.json(ApiResponse.error('You can not delete this page completely', 'user_not_admin'));
         }
 
-        if (pagePathUtils.isUsersHomepage(page.path)) {
-          if (!await crowi.pageService.canDeleteUserHomepage(page.path)) {
+        if (pagePathUtils.isUsersHomepage(page.path) && !crowi.pageService.canDeleteUserHomepageByConfig()) {
+          if (!await crowi.pageService.isUsersHomepageOwnerAbsent(page.path)) {
             return res.json(ApiResponse.error('Could not delete user homepage'));
           }
         }
@@ -789,8 +789,8 @@ module.exports = function(crowi, app) {
           return res.json(ApiResponse.error('You can not delete this page', 'user_not_admin'));
         }
 
-        if (pagePathUtils.isUsersHomepage(page.path)) {
-          if (!await crowi.pageService.canDeleteUserHomepage(page.path)) {
+        if (pagePathUtils.isUsersHomepage(page.path) && !crowi.pageService.canDeleteUserHomepageByConfig()) {
+          if (!await crowi.pageService.isUsersHomepageOwnerAbsent(page.path)) {
             return res.json(ApiResponse.error('Could not delete user homepage'));
           }
         }

+ 8 - 8
apps/app/src/server/service/page.ts

@@ -187,16 +187,16 @@ class PageService {
     return this.canDeleteLogic(creatorId, operator, isRecursively, singleAuthority, recursiveAuthority);
   }
 
-  async canDeleteUserHomepage(path: string): Promise<boolean> {
+  canDeleteUserHomepageByConfig(): boolean {
     const isUsersHomepageDeletionEnabled = configManager.getConfig('crowi', 'security:user-homepage-deletion:isEnabled');
-    if (!isUsersHomepageDeletionEnabled) {
-      return false;
-    }
+    return isUsersHomepageDeletionEnabled;
+  }
 
+  async isUsersHomepageOwnerAbsent(path: string): Promise<boolean> {
     const User = mongoose.model('User');
     const username = getUsernameByPath(path);
-    const userExists = await User.exists({ username });
-    return userExists === null;
+    const ownerExists = await User.exists({ username });
+    return ownerExists === null;
   }
 
   private canDeleteLogic(
@@ -1402,8 +1402,8 @@ class PageService {
       throw new Error('Page is not deletable.');
     }
 
-    if (isUsersHomepage(page.path)) {
-      if (!await this.canDeleteUserHomepage(page.path)) {
+    if (pagePathUtils.isUsersHomepage(page.path) && !this.crowi.pageService.canDeleteUserHomepageByConfig()) {
+      if (!await this.crowi.pageService.isUsersHomepageOwnerAbsent(page.path)) {
         throw new Error('User Homepage is not deletable.');
       }
     }