2018-08-17 13:58:44 +03:00
|
|
|
const express = require('express');
|
|
|
|
const router = express.Router();
|
|
|
|
const Pages = require('../controllers/pages');
|
2019-01-19 17:09:11 +03:00
|
|
|
const PagesOrder = require('../controllers/pagesOrder');
|
2018-08-17 13:58:44 +03:00
|
|
|
|
Authentication (#22)
* Authorization added
* added secret to password, md5 hashing, removed promise from verifyToken, deleted links when not authorized
* added dbinsert script
* turned verifyToken to middleware, added description for dbinsert, added hidden csrf field in auth form
* added middlewares, user model and controller
* JSDoc fix
* wrong password processing fix
* added comments to dbinsert script, moved salt and passHash to singe db doc
* Moved salt to .env, upgradedscript for generating password was, fixed comments and JSDoc
* Deleted using salt (now user is only one), changed verifying password to bcrypt.compare, added httpyOnly property to jwt cookie
2019-03-06 13:22:57 +03:00
|
|
|
const verifyToken = require('./middlewares/token');
|
|
|
|
const allowEdit = require('./middlewares/locals');
|
|
|
|
|
2018-09-19 01:47:32 +03:00
|
|
|
/**
|
|
|
|
* Create new page form
|
|
|
|
*/
|
Authentication (#22)
* Authorization added
* added secret to password, md5 hashing, removed promise from verifyToken, deleted links when not authorized
* added dbinsert script
* turned verifyToken to middleware, added description for dbinsert, added hidden csrf field in auth form
* added middlewares, user model and controller
* JSDoc fix
* wrong password processing fix
* added comments to dbinsert script, moved salt and passHash to singe db doc
* Moved salt to .env, upgradedscript for generating password was, fixed comments and JSDoc
* Deleted using salt (now user is only one), changed verifying password to bcrypt.compare, added httpyOnly property to jwt cookie
2019-03-06 13:22:57 +03:00
|
|
|
router.get('/page/new', verifyToken, allowEdit, async (req, res, next) => {
|
2018-10-04 22:08:21 +03:00
|
|
|
let pagesAvailable = await Pages.getAll();
|
|
|
|
|
|
|
|
res.render('pages/form', {
|
2018-10-15 22:06:01 +03:00
|
|
|
pagesAvailable,
|
|
|
|
page: null
|
2018-10-04 22:08:21 +03:00
|
|
|
});
|
2018-09-19 01:47:32 +03:00
|
|
|
});
|
|
|
|
|
2018-08-17 13:58:44 +03:00
|
|
|
/**
|
2018-10-15 22:06:01 +03:00
|
|
|
* Edit page form
|
2018-08-17 13:58:44 +03:00
|
|
|
*/
|
Authentication (#22)
* Authorization added
* added secret to password, md5 hashing, removed promise from verifyToken, deleted links when not authorized
* added dbinsert script
* turned verifyToken to middleware, added description for dbinsert, added hidden csrf field in auth form
* added middlewares, user model and controller
* JSDoc fix
* wrong password processing fix
* added comments to dbinsert script, moved salt and passHash to singe db doc
* Moved salt to .env, upgradedscript for generating password was, fixed comments and JSDoc
* Deleted using salt (now user is only one), changed verifying password to bcrypt.compare, added httpyOnly property to jwt cookie
2019-03-06 13:22:57 +03:00
|
|
|
router.get('/page/edit/:id', verifyToken, allowEdit, async (req, res, next) => {
|
2018-10-15 22:06:01 +03:00
|
|
|
const pageId = req.params.id;
|
2018-08-17 13:58:44 +03:00
|
|
|
|
|
|
|
try {
|
2019-01-19 17:09:11 +03:00
|
|
|
const page = await Pages.get(pageId);
|
|
|
|
const pagesAvailable = await Pages.getAllExceptChildrens(pageId);
|
|
|
|
const parentsChildrenOrdered = await PagesOrder.getOrderedChildren(pagesAvailable, pageId, page._parent, true);
|
2018-08-17 13:58:44 +03:00
|
|
|
|
2018-10-15 22:06:01 +03:00
|
|
|
res.render('pages/form', {
|
2019-01-19 17:09:11 +03:00
|
|
|
page,
|
|
|
|
parentsChildrenOrdered,
|
|
|
|
pagesAvailable
|
2018-08-17 13:58:44 +03:00
|
|
|
});
|
2018-10-15 22:06:01 +03:00
|
|
|
} catch (error) {
|
|
|
|
res.status(404);
|
|
|
|
next(error);
|
2018-08-17 13:58:44 +03:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
/**
|
2018-10-15 22:06:01 +03:00
|
|
|
* View page
|
2018-08-17 13:58:44 +03:00
|
|
|
*/
|
Authentication (#22)
* Authorization added
* added secret to password, md5 hashing, removed promise from verifyToken, deleted links when not authorized
* added dbinsert script
* turned verifyToken to middleware, added description for dbinsert, added hidden csrf field in auth form
* added middlewares, user model and controller
* JSDoc fix
* wrong password processing fix
* added comments to dbinsert script, moved salt and passHash to singe db doc
* Moved salt to .env, upgradedscript for generating password was, fixed comments and JSDoc
* Deleted using salt (now user is only one), changed verifying password to bcrypt.compare, added httpyOnly property to jwt cookie
2019-03-06 13:22:57 +03:00
|
|
|
router.get('/page/:id', verifyToken, async (req, res, next) => {
|
2018-10-15 22:06:01 +03:00
|
|
|
const pageId = req.params.id;
|
2018-08-17 13:58:44 +03:00
|
|
|
|
|
|
|
try {
|
2018-10-15 22:06:01 +03:00
|
|
|
let page = await Pages.get(pageId);
|
2018-08-17 13:58:44 +03:00
|
|
|
|
2018-12-09 21:45:28 +03:00
|
|
|
let pageParent = await page.parent;
|
|
|
|
|
2018-10-15 22:06:01 +03:00
|
|
|
res.render('pages/page', {
|
2018-12-09 21:45:28 +03:00
|
|
|
page, pageParent
|
2018-08-17 13:58:44 +03:00
|
|
|
});
|
2018-10-15 22:06:01 +03:00
|
|
|
} catch (error) {
|
|
|
|
res.status(404);
|
|
|
|
next(error);
|
2018-08-17 13:58:44 +03:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
module.exports = router;
|