feat: pages admin + path parsing fixes
This commit is contained in:
@@ -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' })
|
||||
|
Reference in New Issue
Block a user