diff --git a/dspback/dependencies.py b/dspback/dependencies.py index f4afe6a..4286c94 100644 --- a/dspback/dependencies.py +++ b/dspback/dependencies.py @@ -213,17 +213,24 @@ async def get_current_user( payload = jwt.decode(token, settings.jwt_secret_key, algorithms=[settings.jwt_algorithm]) token_data = TokenData(**payload) if token_data.orcid is None: + credentials_exception.detail = "Token is missing the orcid" raise credentials_exception if token_data.expiration < datetime.utcnow().timestamp(): # TODO register token in db for requested expiration credentials_exception.detail = "Token is expired" raise credentials_exception - except JWTError: + except JWTError as e: + credentials_exception.detail = f"Exception occurred while decoding token [{str(e)}]" raise credentials_exception user: UserTable = get_user_table(db, orcid=token_data.orcid) if user is None: + credentials_exception.detail = f"No user found for orcid {token_data.orcid}" raise credentials_exception - if not user.access_token or user.access_token != token: + if not user.access_token: + credentials_exception.detail = "Access token is missing" + raise credentials_exception + if user.access_token != token: + credentials_exception.detail = "Access token is invalid" raise credentials_exception return user diff --git a/dspback/routers/earthchem.py b/dspback/routers/earthchem.py index 65bb918..fbe6002 100644 --- a/dspback/routers/earthchem.py +++ b/dspback/routers/earthchem.py @@ -137,16 +137,16 @@ async def get_metadata_repository(self, request: Request, identifier) -> respons description="Deletes the EarthChem record along with the submission record.", ) async def delete_metadata_repository(self, request: Request, identifier): + delete_submission(self.db, self.repository_type, identifier, self.user) + access_token = await self.access_token(request) response = requests.delete( self.delete_url % str(identifier), headers={"accept": "application/json", "Authorization": "Bearer " + str(access_token)}, ) - if response.status_code == 403: + if response.status_code >= 300: raise RepositoryException(status_code=response.status_code, detail=response.text) - delete_submission(self.db, self.repository_type, identifier, self.user) - @router.put( '/submit/earthchem/{identifier}', name="submit", diff --git a/dspback/routers/hydroshare.py b/dspback/routers/hydroshare.py index 84a0bbe..41dbf72 100644 --- a/dspback/routers/hydroshare.py +++ b/dspback/routers/hydroshare.py @@ -105,14 +105,14 @@ async def get_metadata_repository(self, request: Request, identifier): description="Deletes the HydroShare resource along with the submission record.", ) async def delete_metadata_repository(self, request: Request, identifier): + delete_submission(self.db, self.repository_type, identifier, self.user) + access_token = await self.access_token(request) response = requests.delete(self.delete_url % identifier, params={"access_token": access_token}) - if response.status_code == 403: + if response.status_code >= 300: raise RepositoryException(status_code=response.status_code, detail=response.text) - delete_submission(self.db, self.repository_type, identifier, self.user) - @router.put( '/submit/hydroshare/{identifier}', name="submit", diff --git a/dspback/routers/zenodo.py b/dspback/routers/zenodo.py index 5cafc7e..9909f5f 100644 --- a/dspback/routers/zenodo.py +++ b/dspback/routers/zenodo.py @@ -128,13 +128,13 @@ async def get_metadata_repository(self, request: Request, identifier): description="Deletes the Zenodo record along with the submission record.", ) async def delete_metadata_repository(self, request: Request, identifier): + delete_submission(self.db, self.repository_type, identifier, self.user) + access_token = await self.access_token(request) response = requests.delete(self.delete_url % identifier, params={"access_token": access_token}) - if response.status_code == 403: + if response.status_code >= 300: raise RepositoryException(status_code=response.status_code, detail=response.text) - delete_submission(self.db, self.repository_type, identifier, self.user) - @router.put( '/submit/zenodo/{identifier}', name="submit",