From 9e0501a611391f5b4c1cb2d81962bae56005be58 Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Fri, 6 Apr 2018 15:12:09 +0800 Subject: [PATCH] MDL-60416 ltiservice_gradebookservices: supply error code reason --- .../classes/local/resources/lineitem.php | 9 +++++++++ .../classes/local/resources/lineitems.php | 7 +++++++ .../classes/local/resources/results.php | 9 +++++++++ .../gradebookservices/classes/local/resources/scores.php | 9 +++++++++ 4 files changed, 34 insertions(+) diff --git a/mod/lti/service/gradebookservices/classes/local/resources/lineitem.php b/mod/lti/service/gradebookservices/classes/local/resources/lineitem.php index a5921afe3c9..16a3620e74e 100644 --- a/mod/lti/service/gradebookservices/classes/local/resources/lineitem.php +++ b/mod/lti/service/gradebookservices/classes/local/resources/lineitem.php @@ -78,6 +78,7 @@ class lineitem extends resource_base { if (is_null($typeid)) { if (!$this->check_tool_proxy(null, $response->get_request_data())) { $response->set_code(403); + $response->set_reason("Invalid tool proxy specified."); return; } } else { @@ -85,18 +86,21 @@ class lineitem extends resource_base { case self::HTTP_GET: if (!$this->check_type($typeid, $contextid, 'LineItem.item:get', $response->get_request_data())) { $response->set_code(403); + $response->set_reason("This resource does not support GET requests."); return; } break; case self::HTTP_PUT: if (!$this->check_type($typeid, $contextid, 'LineItem.item:put', $response->get_request_data())) { $response->set_code(403); + $response->set_reason("This resource does not support PUT requests."); return; } break; case self::HTTP_DELETE: if (!$this->check_type($typeid, $contextid, 'LineItem.item:delete', $response->get_request_data())) { $response->set_code(403); + $response->set_reason("This resource does not support DELETE requests."); return; } break; @@ -107,19 +111,23 @@ class lineitem extends resource_base { } if (empty($contextid) || (!empty($contenttype) && !in_array($contenttype, $this->formats))) { $response->set_code(400); + $response->set_reason("Invalid request made."); return; } if (!$DB->record_exists('course', array('id' => $contextid))) { $response->set_code(404); + $response->set_reason("Not Found: Course $contextid doesn't exist."); return; } if (!$DB->record_exists('grade_items', array('id' => $itemid))) { $response->set_code(404); + $response->set_reason("Not Found: Grade item $itemid doesn't exist."); return; } $item = $this->get_service()->get_lineitem($contextid, $itemid, $typeid); if ($item === false) { $response->set_code(403); + $response->set_reason("Line item does not exist."); return; } require_once($CFG->libdir.'/gradelib.php'); @@ -138,6 +146,7 @@ class lineitem extends resource_base { break; default: // Should not be possible. $response->set_code(405); + $response->set_reason("Invalid request method specified."); return; } } diff --git a/mod/lti/service/gradebookservices/classes/local/resources/lineitems.php b/mod/lti/service/gradebookservices/classes/local/resources/lineitems.php index e6224ec1022..cd70180adef 100644 --- a/mod/lti/service/gradebookservices/classes/local/resources/lineitems.php +++ b/mod/lti/service/gradebookservices/classes/local/resources/lineitems.php @@ -79,6 +79,7 @@ class lineitems extends resource_base { if (is_null($typeid)) { if (!$this->check_tool_proxy(null, $response->get_request_data())) { $response->set_code(403); + $response->set_reason("Invalid tool proxy specified."); return; } } else { @@ -86,27 +87,32 @@ class lineitems extends resource_base { case self::HTTP_GET: if (!$this->check_type($typeid, $contextid, 'LineItem.collection:get', $response->get_request_data())) { $response->set_code(403); + $response->set_reason("This resource does not support GET requests."); return; } break; case self::HTTP_POST: if (!$this->check_type($typeid, $contextid, 'LineItem.collection:post', $response->get_request_data())) { $response->set_code(403); + $response->set_reason("This resource does not support POST requests."); return; } break; default: // Should not be possible. $response->set_code(405); + $response->set_reason("Invalid request method specified."); return; } } if (empty($contextid) || !($container ^ ($response->get_request_method() === self::HTTP_POST)) || (!empty($contenttype) && !in_array($contenttype, $this->formats))) { $response->set_code(400); + $response->set_reason("Invalid request made."); return; } if (!$DB->record_exists('course', array('id' => $contextid))) { $response->set_code(404); + $response->set_reason("Not Found: Course $contextid doesn't exist."); return; } switch ($response->get_request_method()) { @@ -136,6 +142,7 @@ class lineitems extends resource_base { break; default: // Should not be possible. $response->set_code(405); + $response->set_reason("Invalid request method specified."); return; } $response->set_body($json); diff --git a/mod/lti/service/gradebookservices/classes/local/resources/results.php b/mod/lti/service/gradebookservices/classes/local/resources/results.php index f5d8ac1a7ab..445c1dc91f4 100644 --- a/mod/lti/service/gradebookservices/classes/local/resources/results.php +++ b/mod/lti/service/gradebookservices/classes/local/resources/results.php @@ -77,29 +77,35 @@ class results extends resource_base { if (is_null($typeid)) { if (!$this->check_tool_proxy(null, $response->get_request_data())) { $response->set_code(403); + $response->set_reason("Invalid tool proxy specified."); return; } } else { if (!$this->check_type($typeid, $contextid, 'Result.collection:get', $response->get_request_data())) { $response->set_code(403); + $response->set_reason("This resource does not support GET requests."); return; } } if (empty($contextid) || (!empty($contenttype) && !in_array($contenttype, $this->formats))) { $response->set_code(400); + $response->set_reason("Invalid request made."); return; } if (!$DB->record_exists('course', array('id' => $contextid))) { $response->set_code(404); + $response->set_reason("Not Found: Course $contextid doesn't exist."); return; } if (!$DB->record_exists('grade_items', array('id' => $itemid))) { $response->set_code(404); + $response->set_reason("Not Found: Grade item $itemid doesn't exist."); return; } $item = $this->get_service()->get_lineitem($contextid, $itemid, $typeid); if ($item === false) { $response->set_code(403); + $response->set_reason("Line item does not exist."); return; } $gbs = gradebookservices::find_ltiservice_gradebookservice_for_lineitem($itemid); @@ -114,12 +120,14 @@ class results extends resource_base { if (isset($item->iteminstance) && (!gradebookservices::check_lti_id($ltilinkid, $item->courseid, $this->get_service()->get_tool_proxy()->id))) { $response->set_code(403); + $response->set_reason("Invalid LTI id supplied."); return; } } else { if (isset($item->iteminstance) && (!gradebookservices::check_lti_1x_id($ltilinkid, $item->courseid, $typeid))) { $response->set_code(403); + $response->set_reason("Invalid LTI id supplied."); return; } } @@ -138,6 +146,7 @@ class results extends resource_base { break; default: // Should not be possible. $response->set_code(405); + $response->set_reason("Invalid request method specified."); return; } $response->set_body($json); diff --git a/mod/lti/service/gradebookservices/classes/local/resources/scores.php b/mod/lti/service/gradebookservices/classes/local/resources/scores.php index 4331b220984..afe63eae989 100644 --- a/mod/lti/service/gradebookservices/classes/local/resources/scores.php +++ b/mod/lti/service/gradebookservices/classes/local/resources/scores.php @@ -89,10 +89,12 @@ class scores extends resource_base { switch ($response->get_request_method()) { case 'GET': $response->set_code(405); + $response->set_reason("GET requests are not allowed."); return; case 'POST': if (!$this->check_type($typeid, $contextid, 'Score.collection:post', $response->get_request_data())) { $response->set_code(401); + $response->set_reason("This resource does not support POST requests."); return; } break; @@ -108,15 +110,18 @@ class scores extends resource_base { } if (!$DB->record_exists('course', array('id' => $contextid))) { $response->set_code(404); + $response->set_reason("Not Found: Course $contextid doesn't exist."); return; } if (!$DB->record_exists('grade_items', array('id' => $itemid))) { $response->set_code(404); + $response->set_reason("Not Found: Grade item $itemid doesn't exist."); return; } $item = $this->get_service()->get_lineitem($contextid, $itemid, $typeid); if ($item === false) { $response->set_code(403); + $response->set_reason("Line item does not exist."); return; } $gbs = gradebookservices::find_ltiservice_gradebookservice_for_lineitem($itemid); @@ -131,12 +136,14 @@ class scores extends resource_base { if (isset($item->iteminstance) && (!gradebookservices::check_lti_id($ltilinkid, $item->courseid, $this->get_service()->get_tool_proxy()->id))) { $response->set_code(403); + $response->set_reason("Invalid LTI id supplied."); return; } } else { if (isset($item->iteminstance) && (!gradebookservices::check_lti_1x_id($ltilinkid, $item->courseid, $typeid))) { $response->set_code(403); + $response->set_reason("Invalid LTI id supplied."); return; } } @@ -146,6 +153,7 @@ class scores extends resource_base { switch ($response->get_request_method()) { case 'GET': $response->set_code(405); + $response->set_reason("GET requests are not allowed."); break; case 'POST': try { @@ -158,6 +166,7 @@ class scores extends resource_base { break; default: // Should not be possible. $response->set_code(405); + $response->set_reason("Invalid request method specified."); return; } $response->set_body($json);