MDL-51415 webservice: Check course access using can_access_course()
authorJuan Leyva <juanleyvadelgado@gmail.com>
Tue, 22 Sep 2015 13:29:49 +0000 (15:29 +0200)
committerJuan Leyva <juanleyvadelgado@gmail.com>
Tue, 22 Sep 2015 13:29:49 +0000 (15:29 +0200)
This function check both user enrolled and course:view capabilities

group/externallib.php
notes/externallib.php
user/externallib.php

index 9c44f0a..6034fc7 100644 (file)
@@ -1363,13 +1363,14 @@ class core_group_external extends external_api {
             }
 
             // Validate if the user is enrolled in the course.
-            if (!is_enrolled($coursecontext, $user->id)) {
+            $course = get_course($cm->course);
+            if (!can_access_course($course, $user, '', true)) {
                 // We return a warning because the function does not fail for not enrolled users.
                 $warning = array();
                 $warning['item'] = 'course';
                 $warning['itemid'] = $cm->course;
                 $warning['warningcode'] = '1';
-                $warning['message'] = "User $user->id is not enrolled in course $cm->course";
+                $warning['message'] = "User $user->id cannot access course $cm->course";
                 $warnings[] = $warning;
             }
         }
index fab1f22..8f23cae 100644 (file)
@@ -690,7 +690,7 @@ class core_notes_external extends external_api {
                 throw new moodle_exception('invaliduserid');
             }
 
-            if ($course->id != SITEID and !is_enrolled($context, $user, '', true)) {
+            if ($course->id != SITEID and !can_access_course($course, $user, '', true)) {
                 throw new moodle_exception('notenrolledprofile');
             }
         }
index cb617b4..972ee2b 100644 (file)
@@ -1394,7 +1394,7 @@ class core_user_external extends external_api {
             profile_view($user, $usercontext);
         } else {
             // Case like user/view.php.
-            if (!$currentuser and !is_enrolled($coursecontext, $user->id)) {
+            if (!$currentuser and !can_access_course($course, $user, '', true)) {
                 throw new moodle_exception('notenrolledprofile');
             }