source-academy/backend

Exam mode for courses

martin-henz opened this issue · 5 comments

An admin should be allowed to switch a course to "exam mode" where some features are disabled: share links, sessions, playground local storage, github and google drive.

Can we let admin log out all students? That way they would be forced to log in which might make this feature easier to implement.

Instead of exam mode, we could just give a list of features that admin can enable/disable.

I think it should not be manual, but also configurable on a per-assessment basis (at least, in the long-term – designs for the short-term should keep this in mind). Perhaps we parse additional keys in the XML and update the API between the FE and BE, such that when the student attempts the assessment (of course, subject to the exam configuration):

  • Frontend:
    • Remove features as necessary (e.g. prevent window switching, etc. – similar to Examplify)
    • Detect when there is possibility of exam integrity being compromised and report this to the backend
  • Backend:
    • (Temporarily) updates the access control matrix of the user to revoke access to certain resources/operations (in case the frontend is compromised by way of browser extensions/hacking), until the assessment is submitted

This would require the following revamps/enhancements to our existing system:

  • Migrate user roles to an access-control matrix (more granular permissions framework as opposed to a simple role system)
  • Separate the public, unguarded services (e.g. URL shortener, collaborative editing) from our restricted, SA@NUS deployments
  • ...? (will update as things come to mind)

Can we let admin log out all students? That way they would be forced to log in which might make this feature easier to implement.

I think it's best if the exam mode is done on a per assessment basis instead of a per-deployment basis. E.g. a student might be taking another course/doing last minute revision just before a (synchronous) exam. Or we might want to have a take-home, asynchronous but still secure exam.

Will have to design this feature around multitenancy.

@chownces suggested we bring back the PWA functionality in the frontend as well.