From 7c604469464ce343128a6b970823b666965d359d Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Fri, 17 May 2024 10:18:31 +0200 Subject: [PATCH 1/2] Fix error message on access to restricted zenodo records --- lib/galaxy/files/sources/invenio.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/galaxy/files/sources/invenio.py b/lib/galaxy/files/sources/invenio.py index 99b64cdf5a4..04df3550c28 100644 --- a/lib/galaxy/files/sources/invenio.py +++ b/lib/galaxy/files/sources/invenio.py @@ -15,6 +15,7 @@ from typing_extensions import ( TypedDict, ) +from galaxy.exceptions import AuthenticationRequired from galaxy.files.sources import ( Entry, EntryData, @@ -406,6 +407,10 @@ class InvenioRepositoryInteractor(RDMRepositoryInteractor): return headers def _ensure_response_has_expected_status_code(self, response, expected_status_code: int): + if response.status_code == 403: + raise AuthenticationRequired( + f"Please make sure you have the necessary permissions to access the requested resource." + ) if response.status_code != expected_status_code: error_message = self._get_response_error_message(response) raise Exception( From d6a76f704136fe2a8c934e0a9f0ed3cc740b5979 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Fri, 17 May 2024 10:38:46 +0200 Subject: [PATCH 2/2] Display record URL for verification --- lib/galaxy/files/sources/invenio.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/files/sources/invenio.py b/lib/galaxy/files/sources/invenio.py index 04df3550c28..921438a446b 100644 --- a/lib/galaxy/files/sources/invenio.py +++ b/lib/galaxy/files/sources/invenio.py @@ -408,9 +408,8 @@ class InvenioRepositoryInteractor(RDMRepositoryInteractor): def _ensure_response_has_expected_status_code(self, response, expected_status_code: int): if response.status_code == 403: - raise AuthenticationRequired( - f"Please make sure you have the necessary permissions to access the requested resource." - ) + record_url = response.url.replace("/api", "").replace("/files", "") + raise AuthenticationRequired(f"Please make sure you have the necessary permissions to access: {record_url}") if response.status_code != expected_status_code: error_message = self._get_response_error_message(response) raise Exception(