From 2973f64318776cfe6002edf26e77abd28e388f04 Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Wed, 4 Oct 2017 16:37:00 +0200 Subject: [PATCH] MDL-59248 mod_workshop: Fix permissions checks --- mod/workshop/classes/external.php | 4 ++-- mod/workshop/tests/external_test.php | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/mod/workshop/classes/external.php b/mod/workshop/classes/external.php index e79bef40d33..56bf244ee3f 100644 --- a/mod/workshop/classes/external.php +++ b/mod/workshop/classes/external.php @@ -1230,8 +1230,8 @@ class mod_workshop_external extends external_api { $submission = $DB->get_record('workshop_submissions', array('id' => $assessment->submissionid), '*', MUST_EXIST); list($workshop, $course, $cm, $context) = self::validate_workshop($submission->workshopid); - // Check we can edit the assessment (so we can get the form data). - $workshop->check_edit_assessment($assessment, $submission); + // Check we can view the assessment (so we can get the form data). + $workshop->check_view_assessment($assessment, $submission); $cansetassessmentweight = has_capability('mod/workshop:allocate', $context); $pending = $workshop->get_pending_assessments_by_reviewer($assessment->reviewerid, $assessment->id); diff --git a/mod/workshop/tests/external_test.php b/mod/workshop/tests/external_test.php index fa43ebc2e2c..f25996394dc 100644 --- a/mod/workshop/tests/external_test.php +++ b/mod/workshop/tests/external_test.php @@ -1329,9 +1329,11 @@ class mod_workshop_external_testcase extends externallib_advanced_testcase { // Switch to assessment phase. $DB->set_field('workshop', 'phase', workshop::PHASE_ASSESSMENT, array('id' => $this->workshop->id)); + // Teachers need to be able to view assessments. $this->setUser($this->teacher); - $this->setExpectedException('moodle_exception'); - mod_workshop_external::get_assessment_form_definition($assessmentid); // Teachers can't add/edit assessments. + $result = mod_workshop_external::get_assessment_form_definition($assessmentid); + $result = external_api::clean_returnvalue(mod_workshop_external::get_assessment_form_definition_returns(), $result); + $this->assertEquals(4, $result['dimenssionscount']); } /** @@ -1345,9 +1347,11 @@ class mod_workshop_external_testcase extends externallib_advanced_testcase { $workshop = new workshop($this->workshop, $this->cm, $this->course); $submission = $workshop->get_submission_by_id($submissionid); - $assessmentid = $workshop->add_allocation($submission, $this->student->id); + $assessmentid = $workshop->add_allocation($submission, $this->anotherstudentg1->id); + $DB->set_field('workshop', 'phase', workshop::PHASE_EVALUATION, array('id' => $this->workshop->id)); $this->setUser($this->student); + // Since we are not reviewers we can't see the assessment until the workshop is closed. $this->setExpectedException('moodle_exception'); mod_workshop_external::get_assessment_form_definition($assessmentid); } -- 2.43.0