MDL-55939 course: no permission is needed to view frontpage

This commit is contained in:
Marina Glancy
2017-04-06 14:52:44 +08:00
parent 3f48012eb5
commit 94f61491de
2 changed files with 29 additions and 1 deletions
+3 -1
View File
@@ -427,7 +427,9 @@ class core_course_external extends external_api {
$exceptionparam->courseid = $course->id;
throw new moodle_exception('errorcoursecontextnotvalid', 'webservice', '', $exceptionparam);
}
require_capability('moodle/course:view', $context);
if ($course->id != SITEID) {
require_capability('moodle/course:view', $context);
}
$courseinfo = array();
$courseinfo['id'] = $course->id;
+26
View File
@@ -619,6 +619,32 @@ class core_course_externallib_testcase extends externallib_advanced_testcase {
$this->assertEquals($DB->count_records('course'), count($courses));
}
/**
* Test get_courses without capability
*/
public function test_get_courses_without_capability() {
$this->resetAfterTest(true);
$course1 = $this->getDataGenerator()->create_course();
$this->setUser($this->getDataGenerator()->create_user());
// No permissions are required to get the site course.
$courses = core_course_external::get_courses(array('ids' => [SITEID]));
$courses = external_api::clean_returnvalue(core_course_external::get_courses_returns(), $courses);
$this->assertEquals(1, count($courses));
$this->assertEquals('PHPUnit test site', $courses[0]['fullname']);
$this->assertEquals('site', $courses[0]['format']);
// Requesting course without being enrolled or capability to view it will throw an exception.
try {
core_course_external::get_courses(array('ids' => [$course1->id]));
$this->fail('Exception expected');
} catch (moodle_exception $e) {
$this->assertEquals(1, preg_match('/Course or activity not accessible. \(Not enrolled\)/', $e->getMessage()));
}
}
/**
* Test search_courses
*/