zahmis 5 лет назад
Родитель
Сommit
182d39daa2
1 измененных файлов с 32 добавлено и 14 удалено
  1. 32 14
      src/server/routes/apiv3/pages.js

+ 32 - 14
src/server/routes/apiv3/pages.js

@@ -3,7 +3,10 @@ const loggerFactory = require('@alias/logger');
 const logger = loggerFactory('growi:routes:apiv3:pages'); // eslint-disable-line no-unused-vars
 
 const express = require('express');
-const { query } = require('express-validator');
+const mongoose = require('mongoose');
+
+const Page = mongoose.model('Page');
+const { PageQueryBuilder } = Page;
 
 
 const router = express.Router();
@@ -21,13 +24,24 @@ module.exports = (crowi) => {
 
   const Page = crowi.model('Page');
 
-  const validator = {
-    duplicate: [
-      query('path').isString(),
-      query('PageId').isNumeric(),
-    ],
+  function validateCrowi() {
+    if (crowi == null) {
+      throw new Error('"crowi" is null. Init User model with "crowi" argument first.');
+    }
+  }
+
+  async function addConditionToFilteringByViewerToEdit(builder, user) {
+    validateCrowi();
 
-  };
+    // determine UserGroup condition
+    let userGroups = null;
+    if (user != null) {
+      const UserGroupRelation = crowi.model('UserGroupRelation');
+      userGroups = await UserGroupRelation.findAllUserGroupIdsRelatedToUser(user);
+    }
+
+    return builder.addConditionToFilteringByViewer(user, userGroups, false, false, false);
+  }
 
   /**
    * @swagger
@@ -92,16 +106,20 @@ module.exports = (crowi) => {
     }
   });
 
-  router.get('/duplicate', accessTokenParser, loginRequired, validator.duplicate, async(req, res) => {
+  router.get('/duplicate', accessTokenParser, loginRequired, async(req, res) => {
     const { path } = req.query;
+    const builder = new PageQueryBuilder(path);
+
 
-    const result = await Page.findListWithDescendants(path, req.user);
-    const pages = result.pages;
-    const duplicatePaths = pages.map(element => element.path);
+    // const result = await Page.findListWithDescendants(path, req.user);
+    // const pages = result.pages;
+    // const duplicatePaths = pages.map(element => element.path);
+    // console.log(duplicatePaths);
+    // console.log(req.user);
 
-    console.log(duplicatePaths);
-    console.log(req.user);
-    return res.apiv3({ });
+    const builderPaths = await addConditionToFilteringByViewerToEdit(builder);
+    console.log(builderPaths);
+    return res.apiv3({ builder });
   });
 
   return router;