MDL-74254 course: User may not have capability to browse courses

This commit is contained in:
Marina Glancy 2022-03-17 18:39:14 +01:00
parent 0d0f09bc7f
commit 09446a2934
3 changed files with 10 additions and 3 deletions

View File

@ -412,7 +412,7 @@ class main implements renderable, templatable {
$newcourseurl = '';
$coursecat = \core_course_category::user_top();
if ($category = \core_course_category::get_nearest_editable_subcategory($coursecat, ['create'])) {
if ($coursecat && ($category = \core_course_category::get_nearest_editable_subcategory($coursecat, ['create']))) {
$newcourseurl = new \moodle_url('/course/edit.php', ['category' => $category->id]);
}

View File

@ -64,11 +64,11 @@ $PAGE->theme->addblockposition = BLOCK_ADDBLOCK_POSITION_CUSTOM;
// Add course management if the user has the capabilities for it.
$coursecat = core_course_category::user_top();
$coursemanagemenu = [];
if ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['create'])) {
if ($coursecat && ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['create']))) {
// The user has the capability to create course.
$coursemanagemenu['newcourseurl'] = new moodle_url('/course/edit.php', ['category' => $category->id]);
}
if ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['manage'])) {
if ($coursecat && ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['manage']))) {
// The user has the capability to manage the course category.
$coursemanagemenu['manageurl'] = new moodle_url('/course/management.php', ['categoryid' => $category->id]);
}

View File

@ -30,6 +30,13 @@ Feature: Run tests over my courses.
Given I am on the "My courses" page logged in as "user1"
Then "Course management options" "link" should not exist
Scenario: User without capability to browse courses cannot see any link
Given the following "permission overrides" exist:
| capability | permission | role | contextlevel | reference |
| moodle/category:viewcourselist | Prevent | user | System | |
Given I am on the "My courses" page logged in as "user1"
Then "Course management options" "link" should not exist
@javascript
Scenario: User with creating a course permission can see the Create course link only
Given the following "permission overrides" exist: