Skip to content

Commit 715e1d9

Browse files
committed
Better support diracx login when the refresh_token is invalid
1 parent a950941 commit 715e1d9

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/diracx/client/_patch.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def get_token(
5656
claims: Optional[str] = None,
5757
tenant_id: Optional[str] = None,
5858
**kwargs: Any,
59-
) -> AccessToken:
59+
) -> AccessToken | None:
6060
"""Refresh the access token using the refresh_token flow.
6161
:param str scopes: The type of access needed.
6262
:keyword str claims: Additional claims required in the token, such as those returned in a resource
@@ -159,7 +159,7 @@ def __aenter__(self) -> "DiracClient":
159159

160160
def refresh_token(
161161
location: Path, token_endpoint: str, client_id: str, refresh_token: str
162-
) -> AccessToken:
162+
) -> AccessToken | None:
163163
"""Refresh the access token using the refresh_token flow."""
164164
from diracx.core.utils import write_credentials
165165

@@ -172,9 +172,13 @@ def refresh_token(
172172
},
173173
)
174174

175-
if response.status_code != 200:
176-
# Think more
177-
# location.unlink()
175+
if response.status_code == 401:
176+
reason = response.json()["detail"]
177+
logger.warning("Your refresh token is not valid anymore: %s", reason)
178+
location.unlink()
179+
return None
180+
elif response.status_code != 200:
181+
# TODO: Better handle this case, retry?
178182
raise RuntimeError(
179183
f"An issue occured while refreshing your access token: {response.json()['detail']}"
180184
)

src/diracx/client/aio/_patch.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ async def get_token(
5151
claims: Optional[str] = None,
5252
tenant_id: Optional[str] = None,
5353
**kwargs: Any,
54-
) -> AccessToken:
54+
) -> AccessToken | None:
5555
"""Refresh the access token using the refresh_token flow.
5656
:param str scopes: The type of access needed.
5757
:keyword str claims: Additional claims required in the token, such as those returned in a resource

0 commit comments

Comments
 (0)