ryoji-s 2 лет назад
Родитель
Сommit
0fe8951cdd
1 измененных файлов с 11 добавлено и 5 удалено
  1. 11 5
      apps/app/src/server/routes/apiv3/pages.js

+ 11 - 5
apps/app/src/server/routes/apiv3/pages.js

@@ -940,17 +940,23 @@ module.exports = (crowi) => {
     { filteredPages: [], userHomepages: [] });
 
     const pagesCanBeDeleted = [];
+    const canDeleteCompletely = page => page.isEmpty || crowi.pageService.canDeleteCompletely(page.path, page.creator, req.user, isRecursively);
+    const canDelete = (page) => {
+      return page.isEmpty
+      || page.isUpdatable(pageIdToRevisionIdMap[page._id].toString())
+      || crowi.pageService.canDelete(page.path, page.creator, req.user, isRecursively);
+    };
+
     if (isCompletely) {
       pagesCanBeDeleted.push(...crowi.pageService.filterPagesByCanDeleteCompletely(filteredPages, req.user, isRecursively));
-      const canDeleteCompletely = page => page.isEmpty || crowi.pageService.canDeleteCompletely(page.path, page.creator, req.user, isRecursively);
-      await processCanBeUserHomepageDeletion(canDeleteCompletely, userHomepages, pagesCanBeDeleted);
     }
     else {
-      pagesCanBeDeleted.push(...crowi.pageService.filterPagesByCanDelete(filteredPages, req.user, isRecursively));
-      const canDelete = page => page.isEmpty || crowi.pageService.canDelete(page.path, page.creator, req.user, isRecursively);
-      await processCanBeUserHomepageDeletion(canDelete, userHomepages, pagesCanBeDeleted);
+      const pages = filteredPages.filter(page => page.isEmpty || page.isUpdatable(pageIdToRevisionIdMap[page._id].toString()));
+      pagesCanBeDeleted.push(...crowi.pageService.filterPagesByCanDelete(pages, req.user, isRecursively));
     }
 
+    await processCanBeUserHomepageDeletion(isCompletely ? canDeleteCompletely : canDelete, userHomepages, pagesCanBeDeleted);
+
     if (pagesCanBeDeleted.length === 0) {
       const msg = 'No pages can be deleted.';
       return res.apiv3Err(new ErrorV3(msg), 500);