Taichi Masuyama 4 лет назад
Родитель
Сommit
13a0de45e1
1 измененных файлов с 16 добавлено и 7 удалено
  1. 16 7
      packages/app/src/server/service/page.ts

+ 16 - 7
packages/app/src/server/service/page.ts

@@ -1703,21 +1703,27 @@ class PageService {
   private async normalizeParentRecursively(grant, regexps, publicOnly = false): Promise<void> {
     const BATCH_SIZE = 100;
     const PAGES_LIMIT = 1000;
-    const Page = this.crowi.model('Page');
+    const Page = mongoose.model('Page') as unknown as PageModel;
     const { PageQueryBuilder } = Page;
 
+    // GRANT_RESTRICTED and GRANT_SPECIFIED will never have parent
+    const grantFilter: any = {
+      $or: [
+        { grant: { $ne: Page.GRANT_RESTRICTED } },
+        { grant: { $ne: Page.GRANT_SPECIFIED } },
+      ],
+    };
+
+    if (grant != null) { // add grant condition if not null
+      grantFilter.$or = [...grantFilter.$or, { grant }];
+    }
+
     // generate filter
     let filter: any = {
       parent: null,
       path: { $ne: '/' },
       status: Page.STATUS_PUBLISHED,
     };
-    if (grant != null) {
-      filter = {
-        ...filter,
-        grant,
-      };
-    }
     if (regexps != null && regexps.length !== 0) {
       filter = {
         ...filter,
@@ -1731,6 +1737,9 @@ class PageService {
 
     let baseAggregation = Page
       .aggregate([
+        {
+          $match: grantFilter,
+        },
         {
           $match: filter,
         },