From 59b90d545f59cb00b08b3a5c02edcd9a4a229538 Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Thu, 5 Oct 2023 14:28:45 +0000 Subject: [PATCH 1/2] feat: Add exception to handle API errors on signout --- gotrue/_async/gotrue_client.py | 14 ++++++++++---- gotrue/_sync/gotrue_client.py | 14 ++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/gotrue/_async/gotrue_client.py b/gotrue/_async/gotrue_client.py index 63f5a4f9..8aac7a79 100644 --- a/gotrue/_async/gotrue_client.py +++ b/gotrue/_async/gotrue_client.py @@ -16,6 +16,7 @@ STORAGE_KEY, ) from ..errors import ( + AuthApiError, AuthImplicitGrantRedirectError, AuthInvalidCredentialsError, AuthRetryableError, @@ -483,10 +484,15 @@ async def sign_out(self) -> None: There is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason. """ - session = await self.get_session() - access_token = session.access_token if session else None - if access_token: - await self.admin.sign_out(access_token) + try: + session = await self.get_session() + access_token = session.access_token if session else None + if access_token: + await self.admin.sign_out(access_token) + except AuthApiError: + pass + except Exception: + raise await self._remove_session() self._notify_all_subscribers("SIGNED_OUT", None) diff --git a/gotrue/_sync/gotrue_client.py b/gotrue/_sync/gotrue_client.py index ca909004..36d30a55 100644 --- a/gotrue/_sync/gotrue_client.py +++ b/gotrue/_sync/gotrue_client.py @@ -16,6 +16,7 @@ STORAGE_KEY, ) from ..errors import ( + AuthApiError, AuthImplicitGrantRedirectError, AuthInvalidCredentialsError, AuthRetryableError, @@ -481,10 +482,15 @@ def sign_out(self) -> None: There is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason. """ - session = self.get_session() - access_token = session.access_token if session else None - if access_token: - self.admin.sign_out(access_token) + try: + session = self.get_session() + access_token = session.access_token if session else None + if access_token: + self.admin.sign_out(access_token) + except AuthApiError: + pass + except Exception: + raise self._remove_session() self._notify_all_subscribers("SIGNED_OUT", None) From 2d964ad892e3a40204904319d499f7da9aa9289a Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Thu, 5 Oct 2023 15:03:54 +0000 Subject: [PATCH 2/2] Update to use suppress instead of try except --- gotrue/_async/gotrue_client.py | 8 +++----- gotrue/_sync/gotrue_client.py | 8 +++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/gotrue/_async/gotrue_client.py b/gotrue/_async/gotrue_client.py index 8aac7a79..8e2a15a6 100644 --- a/gotrue/_async/gotrue_client.py +++ b/gotrue/_async/gotrue_client.py @@ -1,5 +1,6 @@ from __future__ import annotations +from contextlib import suppress from functools import partial from json import loads from time import time @@ -484,15 +485,12 @@ async def sign_out(self) -> None: There is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason. """ - try: + with suppress(AuthApiError): session = await self.get_session() access_token = session.access_token if session else None if access_token: await self.admin.sign_out(access_token) - except AuthApiError: - pass - except Exception: - raise + await self._remove_session() self._notify_all_subscribers("SIGNED_OUT", None) diff --git a/gotrue/_sync/gotrue_client.py b/gotrue/_sync/gotrue_client.py index 36d30a55..1e9e87e8 100644 --- a/gotrue/_sync/gotrue_client.py +++ b/gotrue/_sync/gotrue_client.py @@ -1,5 +1,6 @@ from __future__ import annotations +from contextlib import suppress from functools import partial from json import loads from time import time @@ -482,15 +483,12 @@ def sign_out(self) -> None: There is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason. """ - try: + with suppress(AuthApiError): session = self.get_session() access_token = session.access_token if session else None if access_token: self.admin.sign_out(access_token) - except AuthApiError: - pass - except Exception: - raise + self._remove_session() self._notify_all_subscribers("SIGNED_OUT", None)