|
|
@@ -258,7 +258,7 @@ module.exports = function(crowi, app) {
|
|
|
slack: '',
|
|
|
};
|
|
|
|
|
|
- var pageTeamplate = 'customlayout-selector/page';
|
|
|
+ var view = 'customlayout-selector/page';
|
|
|
|
|
|
var isRedirect = false;
|
|
|
Page.findPage(path, req.user, req.query.revision)
|
|
|
@@ -303,7 +303,7 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
if (userPage) {
|
|
|
// change template
|
|
|
- pageTeamplate = 'customlayout-selector/user_page';
|
|
|
+ view = 'customlayout-selector/user_page';
|
|
|
|
|
|
return User.findUserByUsername(User.getUsernameByPath(page.path))
|
|
|
.then(function(data) {
|
|
|
@@ -337,11 +337,11 @@ module.exports = function(crowi, app) {
|
|
|
}
|
|
|
|
|
|
if (isForbidden) {
|
|
|
- pageTeamplate = 'customlayout-selector/forbidden';
|
|
|
+ view = 'customlayout-selector/forbidden';
|
|
|
return;
|
|
|
}
|
|
|
else {
|
|
|
- pageTeamplate = 'customlayout-selector/not_found';
|
|
|
+ view = 'customlayout-selector/not_found';
|
|
|
|
|
|
// look for templates
|
|
|
return Page.findTemplate(path)
|
|
|
@@ -377,11 +377,10 @@ module.exports = function(crowi, app) {
|
|
|
return interceptorManager.process('beforeRenderPage', req, res, renderVars);
|
|
|
})
|
|
|
.then(function() {
|
|
|
- res.render(req.query.presentation ? 'page_presentation' : pageTeamplate, renderVars);
|
|
|
+ res.render(req.query.presentation ? 'page_presentation' : view, renderVars);
|
|
|
})
|
|
|
.catch(function(err) {
|
|
|
- console.log(err);
|
|
|
- debug('Error on rendering pageListShowForCrowiPlus', err);
|
|
|
+ logger.error('Error on rendering pageListShowForCrowiPlus', err);
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
@@ -478,22 +477,28 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- function renderPage(pageData, req, res) {
|
|
|
- // create page
|
|
|
+ async function renderPage(pageData, req, res, isForbidden) {
|
|
|
if (!pageData) {
|
|
|
- const path = getPathFromRequest(req);
|
|
|
- return Page.findTemplate(path)
|
|
|
- .then(template => {
|
|
|
- if (template) {
|
|
|
- template = replacePlaceholders(template, req);
|
|
|
- }
|
|
|
+ let view = 'customlayout-selector/not_found';
|
|
|
+ let template = undefined;
|
|
|
|
|
|
- return res.render('customlayout-selector/not_found', {
|
|
|
- author: {},
|
|
|
- page: false,
|
|
|
- template,
|
|
|
- });
|
|
|
- });
|
|
|
+ // forbidden
|
|
|
+ if (isForbidden) {
|
|
|
+ view = 'customlayout-selector/forbidden';
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ const path = getPathFromRequest(req);
|
|
|
+ template = await Page.findTemplate(path);
|
|
|
+ if (template != null) {
|
|
|
+ template = replacePlaceholders(template, req);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return res.render(view, {
|
|
|
+ author: {},
|
|
|
+ page: false,
|
|
|
+ template,
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -501,15 +506,15 @@ module.exports = function(crowi, app) {
|
|
|
return res.redirect(encodeURI(pageData.redirectTo + '?redirectFrom=' + pagePathUtil.encodePagePath(pageData.path)));
|
|
|
}
|
|
|
|
|
|
- var renderVars = {
|
|
|
+ const renderVars = {
|
|
|
path: pageData.path,
|
|
|
page: pageData,
|
|
|
revision: pageData.revision || {},
|
|
|
author: pageData.revision.author || false,
|
|
|
slack: '',
|
|
|
};
|
|
|
- var userPage = isUserPage(pageData.path);
|
|
|
- var userData = null;
|
|
|
+ const userPage = isUserPage(pageData.path);
|
|
|
+ let userData = null;
|
|
|
|
|
|
Revision.findRevisionList(pageData.path, {})
|
|
|
.then(function(tree) {
|
|
|
@@ -558,11 +563,11 @@ module.exports = function(crowi, app) {
|
|
|
}).then(function() {
|
|
|
return interceptorManager.process('beforeRenderPage', req, res, renderVars);
|
|
|
}).then(function() {
|
|
|
- var defaultPageTeamplate = 'customlayout-selector/page';
|
|
|
+ let view = 'customlayout-selector/page';
|
|
|
if (userData) {
|
|
|
- defaultPageTeamplate = 'customlayout-selector/user_page';
|
|
|
+ view = 'customlayout-selector/user_page';
|
|
|
}
|
|
|
- res.render(req.query.presentation ? 'page_presentation' : defaultPageTeamplate, renderVars);
|
|
|
+ res.render(req.query.presentation ? 'page_presentation' : view, renderVars);
|
|
|
}).catch(function(err) {
|
|
|
debug('Error: renderPage()', err);
|
|
|
if (err) {
|
|
|
@@ -589,7 +594,14 @@ module.exports = function(crowi, app) {
|
|
|
}
|
|
|
|
|
|
return renderPage(page, req, res);
|
|
|
- }).catch(function(err) {
|
|
|
+ })
|
|
|
+ // page is not found or the user is forbidden
|
|
|
+ .catch(function(err) {
|
|
|
+
|
|
|
+ let isForbidden = false;
|
|
|
+ if (err.name === 'UserHasNoGrantException') {
|
|
|
+ isForbidden = true;
|
|
|
+ }
|
|
|
|
|
|
const normalizedPath = Page.normalizePath(path);
|
|
|
if (normalizedPath !== path) {
|
|
|
@@ -632,7 +644,7 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
// render editor
|
|
|
debug('Catch pageShow', err);
|
|
|
- return renderPage(null, req, res);
|
|
|
+ return renderPage(null, req, res, isForbidden);
|
|
|
}
|
|
|
}).catch(function(err) {
|
|
|
debug('Error on rendering pageShow (redirect to portal)', err);
|