From 6a66156463d6fe26c1fa3dfe4d6372f0d637d7b5 Mon Sep 17 00:00:00 2001 From: matt Date: Fri, 22 Apr 2022 04:45:37 +0000 Subject: [PATCH] Added parent login routes --- routes/admin.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/routes/admin.js b/routes/admin.js index 969db7c..3b03a1f 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -5,13 +5,58 @@ const express = require('express'); const router = express.Router(); // Import user defined modules +const Parent = require('../lib/Parent'); const User = require('../lib/User'); +const validator = require('../lib/validator'); + // Redirect /admin to /admin/dashboard router.get('/', (req, res) => { return res.redirect('/admin/dashboard'); }); +router.get('/parent-login', async (req, res) => { + if (req.session.userType !== 'parent') + return res.redirect('/admin'); + + const p = await new Parent(req.db, req.session.userId, 'parent'); + const children = await p.getChildren(); + + res.render('parentLogin', { + ...req.hbsContext, + children: children.map(c => ({ id: c.id, name: c.fullName })) + }); +}); + +router.post('/parent-login', async (req, res) => { + if (req.session.userType !== 'parent') + return res.redirect('/admin'); + + const p = await new Parent(req.db, req.session.userId, 'parent'); + + let fields; + try { + fields = validator.validate(req.body, + [ + 'child' + ], + { + values: { + child: await p.getChildren(false) + } + } + ).fields; + } catch (e) { + console.error(e); + return res.redirect('/admin/parent-login'); + } + + const s = await new User(req.db, fields.get('child'), 'student'); + s.login(req); + + res.redirect('/admin'); +}); + router.get('/dashboard', async (req, res) => { const u = await new User(req.db, req.session.userId);