|
|
@@ -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;
|