From 1ad9be9c07ddc91ffb1c5a40b9a044fd3fa305e9 Mon Sep 17 00:00:00 2001 From: Kangyun Wang Date: Sun, 12 Jan 2025 12:03:21 +0100 Subject: [PATCH 1/2] Check OAuth name type with fallback --- backend/open_webui/utils/oauth.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index 70d130804..0569da98d 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -277,8 +277,13 @@ class OAuthManager: picture_url = "" if not picture_url: picture_url = "/user.png" + username_claim = auth_manager_config.OAUTH_USERNAME_CLAIM + username = user_data.get(username_claim) + if not isinstance(username, str): + username = "User" + role = self.get_user_role(None, user_data) user = Auths.insert_new_auth( @@ -286,7 +291,7 @@ class OAuthManager: password=get_password_hash( str(uuid.uuid4()) ), # Random password, not used - name=user_data.get(username_claim, "User"), + name=username, profile_image_url=picture_url, role=role, oauth_sub=provider_sub, From 564c0fed95aeca43eb24b637faf8e986931f8f70 Mon Sep 17 00:00:00 2001 From: Kangyun Wang Date: Mon, 27 Jan 2025 13:09:44 +0100 Subject: [PATCH 2/2] Fallback using email - Use Email ass fallback for missing "name" field - "email" because the email scope is required unlike the profile scope --- backend/open_webui/utils/oauth.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index b9681c81c..8fdd4b227 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -279,9 +279,9 @@ class OAuthManager: username_claim = auth_manager_config.OAUTH_USERNAME_CLAIM - username = user_data.get(username_claim) - if not isinstance(username, str): - username = "User" + name = user_data.get(username_claim) + if not isinstance(user, str): + name = email role = self.get_user_role(None, user_data) @@ -290,7 +290,7 @@ class OAuthManager: password=get_password_hash( str(uuid.uuid4()) ), # Random password, not used - name=username, + name=name, profile_image_url=picture_url, role=role, oauth_sub=provider_sub,