From 0e667f3ed095cad28ae527524597c233f404a8d7 Mon Sep 17 00:00:00 2001 From: matt Date: Tue, 19 Apr 2022 21:26:29 +0000 Subject: [PATCH] Split testTemplate routes into seperate route file --- routes/test.js | 43 ------------------- routes/testTemplate.js | 94 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 43 deletions(-) create mode 100644 routes/testTemplate.js diff --git a/routes/test.js b/routes/test.js index 70e07e0..58e53d2 100644 --- a/routes/test.js +++ b/routes/test.js @@ -69,49 +69,6 @@ router.post('/test/add', async (req, res) => { return res.redirect(`/admin/test/${t.id}`); }); -router.get('/testTemplate/add', (req, res) => { - res.render('addTestTemplate', { - ...req.hbsContext, - title: 'Stratos - Add test template', - current: 'Tests' - }); -}); - -router.post('/testTemplate/add', async (req, res) => { - const a = await new Account(req.db, req.session.userId); - - let fields; - try { - fields = validator.validate(req.body, - [ - 'name', - 'mark' - ] - ).fields; - } catch (e) { - console.error(e); - return res.redirect('/testTemplate/add'); - } - - try { - await a.createTestTemplate( - fields.get('name'), - fields.get('mark') - ); - } catch (e) { - console.error(e); - - return res.render('error', { - ...req.hbsContext, - title: 'Stratos - Error', - current: 'Tests', - msg: 'Could not create test template' - }); - } - - return res.redirect('/admin/test/add'); -}); - router.all(/test\/(.{36})(\/.*)?/, async (req, res, next) => { let t; try { diff --git a/routes/testTemplate.js b/routes/testTemplate.js new file mode 100644 index 0000000..a3b4519 --- /dev/null +++ b/routes/testTemplate.js @@ -0,0 +1,94 @@ +'use strict'; + +const express = require('express'); +const router = express.Router(); + +const validator = require('../lib/validator'); + +const Account = require('../lib/Account'); +const User = require('../lib/User'); +const TestTemplate = require('../lib/TestTemplate'); + +router.get('/test-templates', async (req, res) => { + const u = await new User(req.db, req.session.userId); + + return res.render('testTemplates', { + ...req.hbsContext, + title: 'Stratos - Test Templates', + current: 'Test Templates', + templates: await u.getTestTemplates() + }); +}); + +router.get('/test-template/add', (req, res) => { + res.render('addTestTemplate', { + ...req.hbsContext, + title: 'Stratos - Add test template', + current: 'Test Templates' + }); +}); + +router.post('/test-template/add', async (req, res) => { + const a = await new Account(req.db, req.session.userId); + + let fields; + try { + fields = validator.validate(req.body, + [ + 'name', + 'mark' + ] + ).fields; + } catch (e) { + console.error(e); + return res.redirect('/test-template/add'); + } + + try { + await a.createTestTemplate( + fields.get('name'), + fields.get('mark') + ); + } catch (e) { + console.error(e); + + return res.render('error', { + ...req.hbsContext, + title: 'Stratos - Error', + current: 'Test Templates', + msg: 'Could not create test template' + }); + } + + return res.redirect('/admin/test-templates'); +}); + +router.all(/test-template\/(.{36})(\/.*)?/, async (req, res, next) => { + let tt; + try { + tt = await new TestTemplate(req.db, req.params[0]); + } catch (e) { + return res.status(400).render('error', { + ...req.hbsContext, + title: 'Stratos - Error', + current: 'Test Templates', + code: 400, + msg: e.message + }); + } + + if (!await tt.hasAccess(await new User( + req.db, + req.session.userId + ))) + return res.redirect('/admin/test-templates'); + + req.tt = tt; + next(); +}); + +module.exports = { + priority: 30, + root: '/admin', + router: router +};