|
@@ -6,6 +6,7 @@ import ErrorV3 from '../../models/vo/error-apiv3';
|
|
|
import loggerFactory from '../../../utils/logger';
|
|
import loggerFactory from '../../../utils/logger';
|
|
|
import Crowi from '../../crowi';
|
|
import Crowi from '../../crowi';
|
|
|
import { ApiV3Response } from './interfaces/apiv3-response';
|
|
import { ApiV3Response } from './interfaces/apiv3-response';
|
|
|
|
|
+import Page from '~/components/Page';
|
|
|
|
|
|
|
|
const logger = loggerFactory('growi:routes:apiv3:page-tree');
|
|
const logger = loggerFactory('growi:routes:apiv3:page-tree');
|
|
|
|
|
|
|
@@ -41,6 +42,20 @@ export default (crowi: Crowi): Router => {
|
|
|
const router = express.Router();
|
|
const router = express.Router();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ router.get('/root', accessTokenParser, loginRequiredStrictly, async(req: AuthorizedRequest, res: ApiV3Response) => {
|
|
|
|
|
+ const Page: PageModel = crowi.model('Page');
|
|
|
|
|
+
|
|
|
|
|
+ let rootPage;
|
|
|
|
|
+ try {
|
|
|
|
|
+ rootPage = await Page.findByPathAndViewer('/', req.user, null, true);
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (err) {
|
|
|
|
|
+ return res.apiv3Err(new ErrorV3('rootPage not found'));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return res.apiv3({ rootPage });
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
// eslint-disable-next-line max-len
|
|
// eslint-disable-next-line max-len
|
|
|
router.get('/ancestors-children', accessTokenParser, loginRequiredStrictly, ...validator.pagePathRequired, apiV3FormValidator, async(req: AuthorizedRequest, res: ApiV3Response): Promise<any> => {
|
|
router.get('/ancestors-children', accessTokenParser, loginRequiredStrictly, ...validator.pagePathRequired, apiV3FormValidator, async(req: AuthorizedRequest, res: ApiV3Response): Promise<any> => {
|
|
|
const { path } = req.query;
|
|
const { path } = req.query;
|