Skip to content

Commit

Permalink
Plugin: LTI: Fix lineitem.readonly scope in AGS
Browse files Browse the repository at this point in the history
  • Loading branch information
AngelFQC committed Aug 8, 2022
1 parent e695cb1 commit 7a6266b
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 5 deletions.
16 changes: 11 additions & 5 deletions plugin/ims_lti/auth.php
Expand Up @@ -207,15 +207,21 @@
if (LtiAssignmentGradesService::AGS_NONE !== $advServices['ags']) {
$agsClaim = [
'scope' => [
LtiAssignmentGradesService::SCOPE_LINE_ITEM,
LtiAssignmentGradesService::SCOPE_LINE_ITEM_READ,
LtiAssignmentGradesService::SCOPE_RESULT_READ,
LtiAssignmentGradesService::SCOPE_SCORE_WRITE,
],
'lineitems' => LtiAssignmentGradesService::getLineItemsUrl(
$course->getId(),
$tool->getId()
),
];

if (LtiAssignmentGradesService::AGS_FULL === $advServices['ags']) {
$agsClaim['scope'][] = LtiAssignmentGradesService::SCOPE_LINE_ITEM;
}

$agsClaim['lineitems'] = LtiAssignmentGradesService::getLineItemsUrl(
$course->getId(),
$tool->getId()
);

if ($tool->getLineItems()->count() === 1) {
$agsClaim['lineitem'] = LtiAssignmentGradesService::getLineItemUrl(
$course->getId(),
Expand Down
8 changes: 8 additions & 0 deletions plugin/ims_lti/src/Service/Resource/LtiLineItemResource.php
Expand Up @@ -56,12 +56,20 @@ public function process()
$this->processGet();
break;
case Request::METHOD_PUT:
if (LtiAssignmentGradesService::AGS_FULL !== $this->tool->getAdvantageServices()['ags']) {
throw new MethodNotAllowedHttpException([Request::METHOD_GET]);
}

$this->validateToken(
[LtiAssignmentGradesService::SCOPE_LINE_ITEM]
);
$this->processPut();
break;
case Request::METHOD_DELETE:
if (LtiAssignmentGradesService::AGS_FULL !== $this->tool->getAdvantageServices()['ags']) {
throw new MethodNotAllowedHttpException([Request::METHOD_GET]);
}

$this->validateToken(
[LtiAssignmentGradesService::SCOPE_LINE_ITEM]
);
Expand Down
4 changes: 4 additions & 0 deletions plugin/ims_lti/src/Service/Resource/LtiLineItemsResource.php
Expand Up @@ -67,6 +67,10 @@ public function process()
{
switch ($this->request->getMethod()) {
case Request::METHOD_POST:
if (LtiAssignmentGradesService::AGS_FULL !== $this->tool->getAdvantageServices()['ags']) {
throw new MethodNotAllowedHttpException([Request::METHOD_GET]);
}

$this->validateToken(
[
LtiAssignmentGradesService::SCOPE_LINE_ITEM,
Expand Down

0 comments on commit 7a6266b

Please sign in to comment.