Proctoring for Moodle

Quiz access rules ::: quizaccess_proctoring
Maintained by Brain Station 23 LogoBrain Station 23
The Moodle Proctoring plugin is a Quiz Access plugin designed to capture a user's picture via webcam to identify the individual attempting the Moodle quiz. It automatically captures images from the user's webcam at 30-second intervals (or any configurable time gap) and stores them as PNG files. Admins can analyze these images after the exam for verification purposes using the BS Face Matching API. This plugin enables the capture of random images via webcam while the student or user is attempting a quiz.
Latest release:
1789 sites
1k downloads
97 fans
Current versions available: 2

Proctoring for Moodle

The Moodle Proctoring plugin is a Quiz Access plugin designed to capture a user's picture via webcam to identify the individual attempting the Moodle quiz. It automatically captures images from the user's webcam at 30-second intervals (or any configurable time gap) and stores them as PNG files. Admins can analyze these images after the exam for verification purposes using the BS Face Matching API.

This plugin enables the capture of random images via webcam while the student or user is attempting a quiz

Click here for plugin demo.

Features

  • Automatically captures user/student images via a webcam during a quiz.
  • Prevents quiz access if the user does not allow camera permissions.
  • Admins can view reports to identify suspicious activities.
  • Works seamlessly with the existing Question Bank and Quiz modules.
  • Stores images in Moodledata as compact PNG files.
  • Provides options to delete images individually or in bulk.
  • Includes proctoring log reports with advanced search capabilities.
  • Allows admins to upload base images for user face recognition.
  • Supports face validation before quiz attempts.
  • Configurable image resolution and capture interval.
  • Face Recognition service(BS). [This feature validates the user image with an uploaded image. You can use Brain Station Face Recognition service. Please contact us (elearning@brainstation-23.com) if you want to obtain API Key for Brain Station face recognition service]

Installation and Configuration

Please the follow the GitHub Readme for updated installation and configuration process.

 
Proctoring Pro is available now! 🎉


Get the Proctoring Pro plugin now.


Our Flagship Plugins

Name Description Get More Info
Proctoring Pro for Moodle Proctoring Pro: Auto-captures webcam photos using BS Face Recognition in quizzes. Proctoring Pro
Alap Schedular for Moodle  Alap Scheduler: Enables students to book teacher slots via a calendar, facilitating Zoom meetings Alap Schedular
Interactive PDF for Moodle Interactive PDF: Enables teacher to add question between texts Interactive PDF
Interviewer for Moodle Interview: Enables teacher to interview/viva with student and mark them. Can be used for job interviews Interviewer

For any Moodle related services, Contact us at elearning@brainstation-23.com

FAQ’s

1. How can I upload a user image? 
> From the settings of the proctoring plugin, there is an option for uploading user images.
2. Why does the analyze image button give a red mark for all the images? 
> Check whether the credentials for the face match methods are correct and the user’s image is uploaded by the admin.
3. Can the students upload their own images? 
> No, only admins can access.
4. Where can I get the BS Service API credentials? 
> Please contact here: elearning@brainstation-23.com for details. 
5. Is the screenshot feature available? 
> No, it is removed because of browser limitation.
6. How can I report an issue regarding this plugin?
> Please raise an issue in this link: GitHub Issues
7. Why is my moodle stuck while validating the face?
> Please check whether the credentials for the face match methods are correct
8. Why can’t I upload some of the user images? 
> Every user image needs to have a face that can be detect. Please make sure the image is bright enough and there is no multiple face in that image. Otherwise, it can’t be uploaded.
9. As a student, why can’t I validate my face before starting a quiz? 
> Student’s image must be uploaded by an admin in the moodle to validate their face before an attempt.
10. What does the yellow mark around the image mean? 
> Case 1: Please check whether the user image is uploaded in moodle.
> Case 2: Images captured with previous version of proctoring plugin can’t be analyzed by the current version of proctoring plugin because it lacks some meta data.

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>;.

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4

Contributors

Brain Station 23 Logo
Brain Station 23 (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Alan Bird
    Mon, Sep 11, 2023, 4:00 PM
    Upgraded to Moodle 4.1.5+ and the latest update of Proctoring 1.3.0. The following error appears and breaks the Moodle Dashboard.

    See trace below:

    Error
    Exception - Class "mod_quiz\local\access_rule_base" not found
    Debug info:
    Error code: generalexceptionmessage
    Stack trace:
    • line 28 of /mod/quiz/accessrule/proctoring/rule.php: Error thrown
    • line 834 of /lib/classes/component.php: call to include_once()
    • line 93 of /mod/quiz/accessmanager.php: call to core_component::get_plugin_list_with_class()
    • line 256 of /mod/quiz/accessmanager.php: call to quiz_access_manager::get_rule_classes()
    • line 126 of /mod/quiz/attemptlib.php: call to quiz_access_manager::load_quiz_and_settings()
    • line 2011 of /mod/quiz/lib.php: call to quiz::create()
    • line 8064 of /lib/moodlelib.php: call to mod_quiz_core_calendar_provide_event_action()
    • line 304 of /calendar/classes/local/event/container.php: call to component_callback()
    • line 42 of /calendar/classes/local/event/factories/event_factory.php: call to core_calendar\local\event\container::apply_component_provide_event_action()
    • line 205 of /calendar/classes/local/event/factories/event_abstract_factory.php: call to core_calendar\local\event\factories\event_factory->apply_component_action()
    • line 369 of /calendar/classes/local/event/data_access/event_vault.php: call to core_calendar\local\event\factories\event_abstract_factory->create_instance()
    • line 177 of /calendar/classes/local/event/data_access/event_vault.php: call to core_calendar\local\event\data_access\event_vault->transform_from_database_record()
    • line 95 of /calendar/classes/local/api.php: call to core_calendar\local\event\data_access\event_vault->get_events()
    • line 3521 of /calendar/lib.php: call to core_calendar\local\api::get_events()
    • line 57 of /blocks/calendar_month/block_calendar_month.php: call to calendar_get_view()
    • line 337 of /blocks/moodleblock.class.php: call to block_calendar_month->get_content()
    • line 231 of /blocks/moodleblock.class.php: call to block_base->formatted_contents()
    • line 1222 of /lib/blocklib.php: call to block_base->get_content_for_output()
    • line 1280 of /lib/blocklib.php: call to block_manager->create_block_contents()
    • line 377 of /lib/blocklib.php: call to block_manager->ensure_content_created()
    • line 4097 of /lib/outputrenderers.php: call to block_manager->region_has_content()
    • line 66 of /theme/remui/layout/common.php: call to core_renderer->blocks()
    • line 29 of /theme/remui/layout/drawers.php: call to require_once()
    • line 1477 of /lib/outputrenderers.php: call to include()
    • line 1403 of /lib/outputrenderers.php: call to core_renderer->render_page_layout()
    • line 179 of /my/index.php: call to core_renderer->header()

    Please advise how to resolve the issue?
  • Alan Bird
    Mon, Sep 11, 2023, 4:01 PM
    And proctoring does not work with the same error
  • synnac w
    Tue, Sep 12, 2023, 7:09 PM
    Can this work with Safe Exam Browser? SEB can lock down the students quiz window, which seems a better solution than detecting students suspicious activities.
  • MSHP MATHURA
    Wed, Sep 13, 2023, 7:40 PM
    We are facing issue Exception - Class 'mod_quiz\local\access_rule_base' not found , Would you please tell us that how to fix this issue.
  • Brain Station 23 Logo
    Wed, Sep 13, 2023, 8:05 PM
    We have released two versions recently. One for Moodle 4.2 and one for Moodle 4.1 and below. Please download the appropriate version to have a smooth experience.
  • Vikram Solia
    Sun, Sep 17, 2023, 3:14 PM
    Hi Proctoring Plugin team, discovered some issues with the plugin as there was a conflict due to an existing integration with AWS:
    Fatal error: Cannot redeclare Aws\constantly() (previously declared in /var/www/___________/mod/quiz/accessrule/proctoring/vendor/aws/aws-sdk-php/src/functions.php:20) in /var/www/__________/local/aws/sdk/Aws/functions.php on line 20.

    Moreover, it does not cleanly uninstall itself causing quizzes to stop working altogether. The users are neither able to attempt nor is it possible to edit the quiz causing issues. Basically, it is the following error:
    Error reading from the database
    More information about this error
    Debug info: Table mdl_quizaccess_proctoring' doesn't exist
    SELECT quiz.*, proctoring required, seb.requiresafeexambrowser AS seb_requiresafeexambrowser, seb.showsebtaskbar AS seb_showsebtaskbar, seb.showwificontrol AS seb_showwificontrol, seb.showreloadbutton AS seb_showreloadbutton, seb.showtime AS seb_showtime, seb.showkeyboardlayout AS seb_showkeyboardlayout, seb.allowuserquitseb AS seb_allowuserquitseb, seb.quitpassword AS seb_quitpassword, seb.linkquitseb AS seb_linkquitseb, seb.userconfirmquit AS seb_userconfirmquit, seb.enableaudiocontrol AS seb_enableaudiocontrol, seb.muteonstartup AS seb_muteonstartup, seb.allowspellchecking AS seb_allowspellchecking, seb.allowreloadinexam AS seb_allowreloadinexam, seb.activateurlfiltering AS seb_activateurlfiltering, seb.filterembeddedcontent AS seb_filterembeddedcontent, seb.expressionsallowed AS seb_expressionsallowed, seb.regexallowed AS seb_regexallowed, seb.expressionsblocked AS seb_expressionsblocked, seb.regexblocked AS seb_regexblocked, seb.allowedbrowserexamkeys AS seb_allowedbrowserexamkeys, seb.showsebdownloadlink AS seb_showsebdownloadlink, sebtemplate.id AS seb_templateid FROM mdl_quiz quiz LEFT JOIN mdl_quizaccess_proctoring proctoring ON proctoring.quizid = quiz.id LEFT JOIN mdl_quizaccess_seb_quizsettings seb ON seb.quizid = quiz.id LEFT JOIN mdl_quizaccess_seb_template sebtemplate ON seb.templateid = sebtemplate.id WHERE quiz.id = ?
    [array (
    0 => '968',
    )]
    Error code: dmlreadexception×Dismiss this notification
    Stack trace:
    line 494 of /lib/dml/moodle_database.php: dml_read_exception thrown
    line 293 of /lib/dml/moodle_read_slave_trait.php: call to moodle_database->query_end()
    line 1278 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->query_end()
    line 1679 of /lib/dml/moodle_database.php: call to mysqli_native_moodle_database->get_records_sql()
    line 258 of /mod/quiz/accessmanager.php: call to moodle_database->get_record_sql()
    line 126 of /mod/quiz/attemptlib.php: call to quiz_access_manager::load_quiz_and_settings()
    line 67 of /mod/quiz/view.php: call to quiz::create()


  • Ramya Tallam
    Wed, Nov 15, 2023, 2:38 PM
    Hello! I have installed moodle proctoring plugin and unable to go beyond 'allow web cam to start the quiz'. There is no prompt for allow web cam access and the picture is blank. Please help.
  • Fernando Oliveira
    Mon, Mar 11, 2024, 9:32 PM
    It looks like this plugin conflicts with LibreLambda Document Converter
    https://moodle.org/plugins/fileconverter_librelambda

    Fatal error: Cannot redeclare Aws\constantly() (previously declared in /var/www/123/htdocs/mod/quiz/accessrule/proctoring/vendor/aws/aws-sdk-php/src/functions.php:20) in /var/www/123/htdocs/local/aws/sdk/Aws/functions.php on line 20
  • Serhii Shapoval
    Wed, Apr 10, 2024, 7:19 PM
    I can't install the plugin. What to do? Help!

    quizaccess_proctoring
    DDL sql execution error
    More information about this error
    Debug info: Table 'mdl_quizaccess_proctoring' already exists
    CREATE TABLE mdl_quizaccess_proctoring (
    id BIGINT(10) NOT NULL auto_increment,
    quizid BIGINT(10) NOT NULL,
    proctoringrequired TINYINT(2) NOT NULL DEFAULT 0,
    CONSTRAINT PRIMARY KEY (id)
    , UNIQUE KEY mdl_quizproc_qui2_uix (quizid)
    )
    ENGINE = InnoDB
    DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
    COMMENT='Stores all the settings for this accessrule'
    ;
    CREATE TABLE mdl_quizaccess_proctoring_logs (
    id BIGINT(10) NOT NULL auto_increment,
    courseid BIGINT(10) NOT NULL,
    quizid BIGINT(10) NOT NULL,
    userid BIGINT(10) NOT NULL DEFAULT 0,
    webcampicture LONGTEXT COLLATE utf8mb4_0900_ai_ci NOT NULL,
    status BIGINT(10) NOT NULL,
    awsscore BIGINT(10) NOT NULL DEFAULT 0,
    awsflag BIGINT(10) NOT NULL DEFAULT 0,
    timemodified BIGINT(10) NOT NULL,
    CONSTRAINT PRIMARY KEY (id)
    )
    ENGINE = InnoDB
    DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
    COMMENT='Stores all validations for reporting'
    ;
    CREATE TABLE mdl_proctoring_facematch_task (
    id BIGINT(10) NOT NULL auto_increment,
    refimageurl LONGTEXT COLLATE utf8mb4_0900_ai_ci NOT NULL,
    targetimageurl LONGTEXT COLLATE utf8mb4_0900_ai_ci NOT NULL,
    reportid BIGINT(10) NOT NULL DEFAULT 0,
    timemodified BIGINT(10) NOT NULL,
    CONSTRAINT PRIMARY KEY (id)
    )
    ENGINE = InnoDB
    DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
    COMMENT='Stores check face recognition task logs'
    ;
    CREATE TABLE mdl_aws_api_log (
    id BIGINT(10) NOT NULL auto_increment,
    reportid BIGINT(10) NOT NULL DEFAULT 0,
    apiresponse LONGTEXT COLLATE utf8mb4_0900_ai_ci NOT NULL,
    timecreated BIGINT(10) NOT NULL,
    CONSTRAINT PRIMARY KEY (id)
    )
    ENGINE = InnoDB
    DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
    COMMENT='Stores aws api call log'
    ;
    CREATE TABLE mdl_proctoring_fm_warnings (
    id BIGINT(10) NOT NULL auto_increment,
    reportid BIGINT(10) NOT NULL DEFAULT 0,
    courseid BIGINT(10) NOT NULL DEFAULT 0,
    quizid BIGINT(10) NOT NULL DEFAULT 0,
    userid BIGINT(10) NOT NULL DEFAULT 0,
    CONSTRAINT PRIMARY KEY (id)
    )
    ENGINE = InnoDB
    DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
    COMMENT='Stores face mismatch warnings'
    ;
    CREATE TABLE mdl_proctoring_user_images (
    id BIGINT(10) NOT NULL auto_increment,
    user_id BIGINT(10) NOT NULL,
    photo_draft_id BIGINT(20) NOT NULL,
    CONSTRAINT PRIMARY KEY (id)
    )
    ENGINE = InnoDB
    DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
    COMMENT='Each record is a data of specific user'
    ;
    CREATE TABLE mdl_proctoring_face_images (
    id BIGINT(10) NOT NULL auto_increment,
    parent_type VARCHAR(20) COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '1',
    parentid BIGINT(20) NOT NULL,
    faceimage LONGTEXT COLLATE utf8mb4_0900_ai_ci NOT NULL,
    facefound VARCHAR(2) COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '0',
    CONSTRAINT PRIMARY KEY (id)
    )
    ENGINE = InnoDB
    DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
    COMMENT='Each record is a data of specific Images'
    Error code: ddlexecuteerror
    ×
    Dismiss this notification
    Stack trace:
    line 500 of /lib/dml/moodle_database.php: ddl_change_structure_exception thrown
    line 293 of /lib/dml/moodle_read_slave_trait.php: call to moodle_database->query_end()
    line 1196 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->query_end()
    line 77 of /lib/ddl/database_manager.php: call to mysqli_native_moodle_database->change_database_structure()
    line 427 of /lib/ddl/database_manager.php: call to database_manager->execute_sql_arr()
    line 372 of /lib/ddl/database_manager.php: call to database_manager->install_from_xmldb_structure()
    line 765 of /lib/upgradelib.php: call to database_manager->install_from_xmldb_file()
    line 1974 of /lib/upgradelib.php: call to upgrade_plugins()
    line 726 of /admin/index.php: call to upgrade_noncore()
  • Juan Sebastian Riano Patino
    Wed, Sep 11, 2024, 8:25 PM
    I am having a problem when activating the proctoring option in the exam.
    The error that appears is the following:

    Exception - Argument 1 passed to quizaccess_proctoring::add_preflight_check_form_fields() must be an instance of quizaccess_proctoring_preflight_form_alias, instance of mod_quiz_preflight_check_form given, called in [dirroot]/mod/quiz/accessmanager_form.php on line 54
  • Cobus van Loggerenberg
    Mon, Oct 21, 2024, 4:39 PM
    Good day, I am trying to install the plugin but it gives me a validation error. Both the Install and downloaded file gives the same error. Error is: [Error] Required Moodle version [2022041912]
    Installation aborted due to validation failure.
  • Michael Milette
    Tue, Nov 12, 2024, 5:26 AM
    Is there a way for me to upload the pre-upload photo by API or CLI?
  • Alexander Meixner-Erbs
    Wed, Nov 13, 2024, 3:43 PM
    Is it possible to enable this exact feature of "Proctoring for Moodle" in SCORM packages? Or does it only work with quizzes? I would need this exact feature in SCORM packages.
  • Gordon Mills
    Wed, Dec 11, 2024, 5:00 PM
    We have an issue when using on a mobile phone you accept the proctoring but can not scroll down to the start button unless you turn the phone to landscape ? any ideas please
  • Inisial E B
    Mon, Jan 20, 2025, 7:52 PM
    Many of our users who click the check mark/agree button find that the front camera display becomes blank/black, or those who have clicked agree/check mark are unable to proceed with the quiz. Even though the camera permission is enabled in the browser.
1 2 3 4 5 6 7 8 9
Please login to post comments