MDL-55939 course: no permission is needed to view frontpage
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user