diff --git a/module/VuFind/src/VuFind/ILS/Driver/Folio.php b/module/VuFind/src/VuFind/ILS/Driver/Folio.php index 5a5547a6bf68a1fb5326f58328fdedfc0f79f7a1..c36fa902495a235dc0c8ff1fde6c6a92c3fb8783 100644 --- a/module/VuFind/src/VuFind/ILS/Driver/Folio.php +++ b/module/VuFind/src/VuFind/ILS/Driver/Folio.php @@ -939,6 +939,7 @@ class Folio extends AbstractAPI implements public function cancelHolds($cancelDetails) { $details = $cancelDetails['details']; + $patron = $cancelDetails['patron']; $count = 0; $cancelResult = ['items' => []]; @@ -948,16 +949,18 @@ class Folio extends AbstractAPI implements ); $request_json = json_decode($response->getBody()); + // confirm request belongs to signed in patron + if ($request_json->requesterId != $patron['id']) { + throw new ILSException("Invalid Request"); + } // Change status to Closed and add cancellationID $request_json->status = 'Closed - Cancelled'; $request_json->cancellationReasonId = $this->config['Holds']['cancellation_reason']; - $cancel_response = $this->makeRequest( 'PUT', '/circulation/requests/' . $requestId, json_encode($request_json) ); - if ($cancel_response->getStatusCode() == 204) { $count++; $cancelResult['items'][$request_json->itemId] = [