MDL-59248 mod_workshop: Fix permissions checks

This commit is contained in:
Juan Leyva
2017-10-04 20:15:14 +02:00
committed by Eloy Lafuente (stronk7)
parent 2c1be712a3
commit 2973f64318
2 changed files with 9 additions and 5 deletions
+2 -2
View File
@@ -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);
+7 -3
View File
@@ -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);
}