From 6aa15b59a3733e2d449815726beb5b2591d0587b Mon Sep 17 00:00:00 2001 From: Ana Rute Mendes Date: Sat, 27 Jan 2024 12:16:59 +0100 Subject: [PATCH] api: update user based on oauth token Keep the user details (name and email) in sync with the values from the oauth. --- api/dependencies.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/api/dependencies.py b/api/dependencies.py index 6f932b6e4..a039e77c5 100644 --- a/api/dependencies.py +++ b/api/dependencies.py @@ -26,7 +26,20 @@ async def get_current_user(token: Annotated[str, Depends(oauth2_scheme)], db: Se status_code=status.HTTP_401_UNAUTHORIZED, detail="You are not an authorized user.", ) - + update_user = False + if not user.first_name or user.first_name != decoded["given_name"]: + update_user = True + user.first_name = decoded["given_name"] + if not user.last_name or user.last_name != decoded["family_name"]: + update_user = True + user.last_name = decoded["family_name"] + if not user.email or user.email != decoded["email"]: + update_user = True + user.email = decoded["email"] + if update_user: + UserService(db).update_user( + username=user.username, email=user.email, first_name=user.first_name, last_name=user.last_name + ) if USE_OIDC_ROLES: user.roles = decoded[OIDC_ROLES_PROPERTY].copy() user.authorized_scopes = decoded["scopes"].copy()