diff --git a/lib/Class.js b/lib/Class.js index 2007c73..b579d1b 100644 --- a/lib/Class.js +++ b/lib/Class.js @@ -244,6 +244,11 @@ class Class { if (!validTypes.includes(u.type)) throw new Error('Invalid user type'); + this.teachers = await this.getTeachers(); + + if (u.type === 'account' && this.teachers.length < 2) + throw new Error('Can\'t remove last teacher'); + const sql = ` delete from ${u.type}ClassLink where diff --git a/routes/singleClass.js b/routes/singleClass.js index f5ce99d..9e2b8e9 100644 --- a/routes/singleClass.js +++ b/routes/singleClass.js @@ -240,8 +240,18 @@ router.post('/:id/:userType(members|teachers)/:userId/remove', const u = await new User(req.db, null, req.params.userId); const userType = req.params.userType; - await c.removeUser(u); - return res.redirect(`/admin/class/${c.id}/${userType}`); + try { + await c.removeUser(u); + return res.redirect(`/admin/class/${c.id}/${userType}`); + } catch (e) { + console.error(e); + return res.render('error', { + title: 'Stratos - Error', + current: 'Classes', + name: req.session.fullName, + msg: `Can not remove this user: ${e.message}` + }); + } } );