X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=routes%2Fpages.js;h=c92f2e71c3ed7698a9f0e93453c0ee8a4abc801a;hb=43828378be054cf3604b753e8d9ab24af911188f;hp=37b84cf7d852595ec2947457e65b1d3c1cb1b3b9;hpb=e99c53fb3be56eb4c685dd061eef0e5b5bf22b73;p=qomet.git diff --git a/routes/pages.js b/routes/pages.js index 37b84cf..c92f2e7 100644 --- a/routes/pages.js +++ b/routes/pages.js @@ -1,15 +1,14 @@ let router = require("express").Router(); const access = require("../utils/access"); -const UserEntity = require("../entities/user"); -const AssessmentEntity = require("../entities/assessment"); -const CourseModel = require("../models/course"); +const UserModel = require("../models/user"); const AssessmentModel = require("../models/assessment"); +const CourseModel = require("../models/course"); // Actual pages (least specific last) // List initials and count assessments router.get("/", (req,res) => { - UserEntity.getAll( (err,userArray) => { + UserModel.getAll( (err,userArray) => { if (!!err) return res.json(err); res.render("index", { @@ -28,14 +27,20 @@ router.get("/login", access.unlogged, (req,res) => { // Redirection screens when possible cheating attempt detected in exam router.get("/enablejs", (req,res) => { - res.render("enable-js", { + res.render("enablejs", { title: "JS disabled", }); }); -router.get("/nodevtools", (req,res) => { - res.render("no-devtools", { - title: "Devtools enabled", +router.get("/fullscreen", (req,res) => { + res.render("fullscreen", { + title: "Not in fullscreen", + }); +}); + +router.get("/noblur", (req,res) => { + res.render("noblur", { + title: "Lost focus", }); }); @@ -70,7 +75,7 @@ router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)", (req,res) => { let code = req.params["courseCode"]; CourseModel.getByRefs(initials, code, (err,course) => { access.checkRequest(res, err, course, "Course not found", () => { - AssessmentEntity.getByCourse(course._id, (err2,assessmentArray) => { + AssessmentModel.getByCourse(course._id, (err2,assessmentArray) => { if (!!err) return res.json(err); access.getUser(req, res, (err2,user) => { @@ -91,6 +96,18 @@ router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)", (req,res) => { }); }); +// Grading students answers: --> after identification (password), always send secret with requests +router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/grade", (req,res) => { + let initials = req.params["initials"]; + let code = req.params["courseCode"]; + // TODO: if (main) teacher, also send secret, saving one request + res.render("grade", { + title: "grade exams " + code + "/" + name, + initials: initials, + courseCode: code, + }); +}); + // Display assessment (exam or open status) router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/:assessmentName([a-z0-9._-]+)", (req,res) => { let initials = req.params["initials"]; @@ -108,8 +125,7 @@ router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/:assessmentName([a-z // Basic headless browser detection return res.json({errmsg: "Headless browser detected"}); } - // Strip conclusion + questions if exam mode (stepwise process) - delete assessment["conclusion"]; + // Strip questions if exam mode (stepwise process) delete assessment["questions"]; } res.render("assessment", { @@ -120,16 +136,17 @@ router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/:assessmentName([a-z }); }); -// Monitor: --> after identification (password), always send password hash with requests +// Monitor: --> after identification (password), always send secret with requests router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/:assessmentName([a-z0-9._-]+)/monitor", (req,res) => { let initials = req.params["initials"]; let code = req.params["courseCode"]; let name = req.params["assessmentName"]; + // TODO: if (main) teacher, also send secret, saving one request res.render("monitor", { title: "monitor assessment " + code + "/" + name, initials: initials, - code: code, - name: name, + courseCode: code, + examName: name, }); });