const Middleware = require('libflitter/middleware/Middleware') /* * PageRoute Middleware * ------------------------------------------------------------- * Put some description here! */ class PageRoute extends Middleware { static get services() { return [...super.services, 'models'] } /* * Run the middleware test. * This method is required by all Flitter middleware. * It should either call the next function in the stack, * or it should handle the response accordingly. */ async test(req, res, next, args = {}){ const Page = this.models.get('api:Page') const PageId = req.form.PageId ? req.form.PageId : req.params.PageId if ( !PageId ) return res.status(400).message(`Missing PageId.`).api({}) const level = args.level ? args.level : 'view' const page = await Page.findOne({UUID: PageId}) if ( !page ) return res.status(404).message(`Unable to find page with that id.`).api({}) if ( !(await page.is_accessible_by(req.user, level)) ) return req.security.deny() if ( !req.form ) req.form = {} req.form.page = page /* * Call the next function in the stack. */ next() } } module.exports = exports = PageRoute