feat: pages admin + path parsing fixes

This commit is contained in:
Nick
2019-07-02 01:48:19 -04:00
parent 4f968cf230
commit 13f172978f
13 changed files with 454 additions and 45 deletions

View File

@@ -28,12 +28,24 @@ router.get('/healthz', (req, res, next) => {
}
})
/**
* Administration
*/
router.get(['/a', '/a/*'], (req, res, next) => {
_.set(res.locals, 'pageMeta.title', 'Admin')
res.render('admin')
})
/**
* Create/Edit document
*/
router.get(['/e', '/e/*'], async (req, res, next) => {
const pageArgs = pageHelper.parsePath(req.path, { stripExt: true })
if (WIKI.config.lang.namespacing && !pageArgs.explicitLocale) {
return res.redirect(`/e/${pageArgs.locale}/${pageArgs.path}`)
}
_.set(res, 'locals.siteConfig.lang', pageArgs.locale)
if (pageHelper.isReservedPath(pageArgs.path)) {
@@ -75,28 +87,16 @@ router.get(['/e', '/e/*'], async (req, res, next) => {
res.render('editor', { page })
})
/**
* Administration
*/
router.get(['/a', '/a/*'], (req, res, next) => {
_.set(res.locals, 'pageMeta.title', 'Admin')
res.render('admin')
})
/**
* Profile
*/
router.get(['/p', '/p/*'], (req, res, next) => {
_.set(res.locals, 'pageMeta.title', 'User Profile')
res.render('profile')
})
/**
* History
*/
router.get(['/h', '/h/*'], async (req, res, next) => {
const pageArgs = pageHelper.parsePath(req.path, { stripExt: true })
if (WIKI.config.lang.namespacing && !pageArgs.explicitLocale) {
return res.redirect(`/h/${pageArgs.locale}/${pageArgs.path}`)
}
_.set(res, 'locals.siteConfig.lang', pageArgs.locale)
if (!WIKI.auth.checkAccess(req.user, ['read:pages'], pageArgs)) {
@@ -119,12 +119,24 @@ router.get(['/h', '/h/*'], async (req, res, next) => {
}
})
/**
* Profile
*/
router.get(['/p', '/p/*'], (req, res, next) => {
_.set(res.locals, 'pageMeta.title', 'User Profile')
res.render('profile')
})
/**
* Source
*/
router.get(['/s', '/s/*'], async (req, res, next) => {
const pageArgs = pageHelper.parsePath(req.path, { stripExt: true })
if (WIKI.config.lang.namespacing && !pageArgs.explicitLocale) {
return res.redirect(`/s/${pageArgs.locale}/${pageArgs.path}`)
}
_.set(res, 'locals.siteConfig.lang', pageArgs.locale)
if (!WIKI.auth.checkAccess(req.user, ['read:pages'], pageArgs)) {
@@ -155,6 +167,10 @@ router.get('/*', async (req, res, next) => {
const isPage = (stripExt || pageArgs.path.indexOf('.') === -1)
if (isPage) {
if (WIKI.config.lang.namespacing && !pageArgs.explicitLocale) {
return res.redirect(`/${pageArgs.locale}/${pageArgs.path}`)
}
if (!WIKI.auth.checkAccess(req.user, ['read:pages'], pageArgs)) {
_.set(res.locals, 'pageMeta.title', 'Unauthorized')
return res.status(403).render('unauthorized', { action: 'view' })