From 927ce0eae67af1b4a856d3e82fba0601c3b40d02 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 16 Aug 2026 23:58:56 -0700 Subject: [PATCH] refac Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com> --- backend/open_webui/utils/oauth.py | 35 ++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index 69cf203c3e..8fb1f72a9b 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -1978,14 +1978,18 @@ class OAuthManager: data={'role': determined_role, 'provider': provider}, ) + updated_fields = [] + if auth_config.OAUTH_UPDATE_NAME_ON_LOGIN: username_claim = auth_config.OAUTH_USERNAME_CLAIM if username_claim: new_name = user_data.get(username_claim) if new_name and new_name != user.name: - await Users.update_user_by_id(user.id, {'name': new_name}, db=db) - user.name = new_name - log.debug('Updated name for user %s', user.email) + updated_user = await Users.update_user_by_id(user.id, {'name': new_name}, db=db) + if updated_user: + user = updated_user + updated_fields.append('name') + log.debug('Updated name for user %s', user.email) if auth_config.OAUTH_UPDATE_EMAIL_ON_LOGIN: email_claim = auth_config.OAUTH_EMAIL_CLAIM @@ -1997,9 +2001,9 @@ class OAuthManager: log.error( f'Cannot update email to {new_email} for user {user.id} because it is already taken.' ) - else: - await Auths.update_email_by_id(user.id, new_email.lower(), db=db) - user.email = new_email.lower() + elif await Auths.update_email_by_id(user.id, new_email.lower(), db=db): + user = await Users.get_user_by_id(user.id, db=db) or user + updated_fields.append('email') log.debug('Updated email for user %s', user.id) # Update profile picture if enabled and different from current @@ -2014,8 +2018,23 @@ class OAuthManager: new_picture_url, token.get('access_token') ) if processed_picture_url != user.profile_image_url: - await Users.update_user_profile_image_url_by_id(user.id, processed_picture_url, db=db) - log.debug('Updated profile picture for user %s', user.email) + updated_user = await Users.update_user_profile_image_url_by_id( + user.id, processed_picture_url, db=db + ) + if updated_user: + user = updated_user + updated_fields.append('profile_image_url') + log.debug('Updated profile picture for user %s', user.email) + + if updated_fields: + await publish_event( + request, + EVENTS.USER_UPDATED, + actor=user, + subject_id=user.id, + source='oauth', + data={'updated_fields': updated_fields, 'provider': provider}, + ) else: # If the user does not exist, check if signups are enabled if auth_config.ENABLE_OAUTH_SIGNUP: