ryoji-s 2 лет назад
Родитель
Сommit
16377f8884
2 измененных файлов с 4 добавлено и 78 удалено
  1. 1 23
      apps/app/src/server/routes/apiv3/page-listing.ts
  2. 3 55
      apps/app/src/server/service/page.ts

+ 1 - 23
apps/app/src/server/routes/apiv3/page-listing.ts

@@ -3,7 +3,6 @@ import type {
 } from '@growi/core';
 } from '@growi/core';
 import { isIPageInfoForEntity } from '@growi/core';
 import { isIPageInfoForEntity } from '@growi/core';
 import { ErrorV3 } from '@growi/core/dist/models';
 import { ErrorV3 } from '@growi/core/dist/models';
-import { isUsersHomepage } from '@growi/core/dist/utils/page-path-utils';
 import express, { Request, Router } from 'express';
 import express, { Request, Router } from 'express';
 import { query, oneOf } from 'express-validator';
 import { query, oneOf } from 'express-validator';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
@@ -142,8 +141,7 @@ const routerFactory = (crowi: Crowi): Router => {
 
 
       const isGuestUser = req.user == null;
       const isGuestUser = req.user == null;
 
 
-      const filteredPages = pages.filter(page => !isUsersHomepage(page.path));
-      for (const page of filteredPages) {
+      for (const page of pages) {
         // construct isIPageInfoForListing
         // construct isIPageInfoForListing
         const basicPageInfo = pageService.constructBasicPageInfo(page, isGuestUser);
         const basicPageInfo = pageService.constructBasicPageInfo(page, isGuestUser);
 
 
@@ -160,26 +158,6 @@ const routerFactory = (crowi: Crowi): Router => {
         idToPageInfoMap[page._id] = pageInfo;
         idToPageInfoMap[page._id] = pageInfo;
       }
       }
 
 
-      const userHomepages = pages.filter(page => isUsersHomepage(page.path));
-      const promiseArray = userHomepages.map(async(page) => {
-        // construct isIPageInfoForListing
-        const basicPageInfo = await pageService.constructBasicPageInfoPromise(page, isGuestUser);
-
-        const pageInfo = (!isIPageInfoForEntity(basicPageInfo))
-          ? basicPageInfo
-          // create IPageInfoForListing
-          : {
-            ...basicPageInfo,
-            isAbleToDeleteCompletely: await pageService.canDeleteCompletelyPromise(page.path, (page.creator as IUserHasId)?._id, req.user, false), // use normal delete config
-            bookmarkCount: bookmarkCountMap != null ? bookmarkCountMap[page._id] : undefined,
-            revisionShortBody: shortBodiesMap != null ? shortBodiesMap[page._id] : undefined,
-          } as IPageInfoForListing;
-
-        idToPageInfoMap[page._id] = pageInfo;
-      });
-
-      await Promise.all(promiseArray);
-
       return res.apiv3(idToPageInfoMap);
       return res.apiv3(idToPageInfoMap);
     }
     }
     catch (err) {
     catch (err) {

+ 3 - 55
apps/app/src/server/service/page.ts

@@ -166,7 +166,7 @@ class PageService {
   }
   }
 
 
   canDeleteCompletely(path: string, creatorId: ObjectIdLike, operator: any | null, isRecursively: boolean): boolean {
   canDeleteCompletely(path: string, creatorId: ObjectIdLike, operator: any | null, isRecursively: boolean): boolean {
-    if (operator == null || isTopPage(path) || isUsersTopPage(path) || isUsersHomepage(path)) {
+    if (operator == null || isTopPage(path) || isUsersTopPage(path)) {
       return false;
       return false;
     }
     }
 
 
@@ -179,7 +179,7 @@ class PageService {
   }
   }
 
 
   canDelete(path: string, creatorId: ObjectIdLike, operator: any | null, isRecursively: boolean): boolean {
   canDelete(path: string, creatorId: ObjectIdLike, operator: any | null, isRecursively: boolean): boolean {
-    if (operator == null || isTopPage(path) || isUsersTopPage(path) || isUsersHomepage(path)) {
+    if (operator == null || isTopPage(path) || isUsersTopPage(path)) {
       return false;
       return false;
     }
     }
 
 
@@ -318,7 +318,7 @@ class PageService {
     }
     }
 
 
     const isGuestUser = user == null;
     const isGuestUser = user == null;
-    const pageInfo = await this.constructBasicPageInfoPromise(page, isGuestUser);
+    const pageInfo = this.constructBasicPageInfo(page, isGuestUser);
 
 
     const Bookmark = this.crowi.model('Bookmark');
     const Bookmark = this.crowi.model('Bookmark');
     const bookmarkCount = await Bookmark.countByPageId(pageId);
     const bookmarkCount = await Bookmark.countByPageId(pageId);
@@ -2462,63 +2462,11 @@ class PageService {
   }
   }
 
 
   constructBasicPageInfo(page: PageDocument, isGuestUser?: boolean): IPageInfo | IPageInfoForEntity {
   constructBasicPageInfo(page: PageDocument, isGuestUser?: boolean): IPageInfo | IPageInfoForEntity {
-    let isDeletable = true;
-    if (isGuestUser || isTopPage(page.path) || isUsersTopPage(page.path) || isUsersHomepage(page.path)) {
-      isDeletable = false;
-    }
-
-    if (page.isEmpty) {
-      return {
-        isV5Compatible: true,
-        isEmpty: true,
-        isDeletable: false,
-        isAbleToDeleteCompletely: false,
-        isRevertible: false,
-      };
-    }
-
-    const likers = page.liker.slice(0, 15) as Ref<IUserHasId>[];
-    const seenUsers = page.seenUsers.slice(0, 15) as Ref<IUserHasId>[];
-
-    return {
-      isV5Compatible: isTopPage(page.path) || page.parent != null,
-      isEmpty: false,
-      sumOfLikers: page.liker.length,
-      likerIds: this.extractStringIds(likers),
-      seenUserIds: this.extractStringIds(seenUsers),
-      sumOfSeenUsers: page.seenUsers.length,
-      isDeletable,
-      isAbleToDeleteCompletely: false,
-      isRevertible: isTrashPage(page.path),
-      contentAge: page.getContentAge(),
-      descendantCount: page.descendantCount,
-      commentCount: page.commentCount,
-    };
-
-  }
-
-  async constructBasicPageInfoPromise(page: PageDocument, isGuestUser?: boolean): Promise<IPageInfo | IPageInfoForEntity> {
     let isDeletable = true;
     let isDeletable = true;
     if (isGuestUser || isTopPage(page.path) || isUsersTopPage(page.path)) {
     if (isGuestUser || isTopPage(page.path) || isUsersTopPage(page.path)) {
       isDeletable = false;
       isDeletable = false;
     }
     }
 
 
-    if (isUsersHomepage(page.path)) {
-      const isUsersHomepageDeletionEnabled = configManager.getConfig('crowi', 'security:user-homepage-deletion:isEnabled');
-
-      if (!isUsersHomepageDeletionEnabled) {
-        isDeletable = false;
-      }
-      else {
-        const User = mongoose.model('User');
-        const username = getUsernameByPath(page.path);
-        const userHomepageOwner = await User.findOne<Promise<IUserHasId | null>>({ username });
-        if (userHomepageOwner != null) {
-          isDeletable = false;
-        }
-      }
-    }
-
     if (page.isEmpty) {
     if (page.isEmpty) {
       return {
       return {
         isV5Compatible: true,
         isV5Compatible: true,