refac
This commit is contained in:
@@ -642,6 +642,18 @@ OAUTH_UPDATE_PICTURE_ON_LOGIN = PersistentConfig(
|
|||||||
os.environ.get("OAUTH_UPDATE_PICTURE_ON_LOGIN", "False").lower() == "true",
|
os.environ.get("OAUTH_UPDATE_PICTURE_ON_LOGIN", "False").lower() == "true",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
OAUTH_UPDATE_NAME_ON_LOGIN = PersistentConfig(
|
||||||
|
"OAUTH_UPDATE_NAME_ON_LOGIN",
|
||||||
|
"oauth.update_name_on_login",
|
||||||
|
os.environ.get("OAUTH_UPDATE_NAME_ON_LOGIN", "False").lower() == "true",
|
||||||
|
)
|
||||||
|
|
||||||
|
OAUTH_UPDATE_EMAIL_ON_LOGIN = PersistentConfig(
|
||||||
|
"OAUTH_UPDATE_EMAIL_ON_LOGIN",
|
||||||
|
"oauth.update_email_on_login",
|
||||||
|
os.environ.get("OAUTH_UPDATE_EMAIL_ON_LOGIN", "False").lower() == "true",
|
||||||
|
)
|
||||||
|
|
||||||
OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID = (
|
OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID = (
|
||||||
os.environ.get("OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID", "False").lower()
|
os.environ.get("OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID", "False").lower()
|
||||||
== "true"
|
== "true"
|
||||||
|
|||||||
@@ -197,7 +197,10 @@ class AuthsTable:
|
|||||||
with get_db_context(db) as db:
|
with get_db_context(db) as db:
|
||||||
result = db.query(Auth).filter_by(id=id).update({"email": email})
|
result = db.query(Auth).filter_by(id=id).update({"email": email})
|
||||||
db.commit()
|
db.commit()
|
||||||
return True if result == 1 else False
|
if result == 1:
|
||||||
|
Users.update_user_by_id(id, {"email": email}, db=db)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
except Exception:
|
except Exception:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ from open_webui.config import (
|
|||||||
OAUTH_ADMIN_ROLES,
|
OAUTH_ADMIN_ROLES,
|
||||||
OAUTH_ALLOWED_DOMAINS,
|
OAUTH_ALLOWED_DOMAINS,
|
||||||
OAUTH_UPDATE_PICTURE_ON_LOGIN,
|
OAUTH_UPDATE_PICTURE_ON_LOGIN,
|
||||||
|
OAUTH_UPDATE_NAME_ON_LOGIN,
|
||||||
|
OAUTH_UPDATE_EMAIL_ON_LOGIN,
|
||||||
OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID,
|
OAUTH_ACCESS_TOKEN_REQUEST_INCLUDE_CLIENT_ID,
|
||||||
OAUTH_AUDIENCE,
|
OAUTH_AUDIENCE,
|
||||||
WEBHOOK_URL,
|
WEBHOOK_URL,
|
||||||
@@ -129,6 +131,8 @@ auth_manager_config.OAUTH_ALLOWED_DOMAINS = OAUTH_ALLOWED_DOMAINS
|
|||||||
auth_manager_config.WEBHOOK_URL = WEBHOOK_URL
|
auth_manager_config.WEBHOOK_URL = WEBHOOK_URL
|
||||||
auth_manager_config.JWT_EXPIRES_IN = JWT_EXPIRES_IN
|
auth_manager_config.JWT_EXPIRES_IN = JWT_EXPIRES_IN
|
||||||
auth_manager_config.OAUTH_UPDATE_PICTURE_ON_LOGIN = OAUTH_UPDATE_PICTURE_ON_LOGIN
|
auth_manager_config.OAUTH_UPDATE_PICTURE_ON_LOGIN = OAUTH_UPDATE_PICTURE_ON_LOGIN
|
||||||
|
auth_manager_config.OAUTH_UPDATE_NAME_ON_LOGIN = OAUTH_UPDATE_NAME_ON_LOGIN
|
||||||
|
auth_manager_config.OAUTH_UPDATE_EMAIL_ON_LOGIN = OAUTH_UPDATE_EMAIL_ON_LOGIN
|
||||||
auth_manager_config.OAUTH_AUDIENCE = OAUTH_AUDIENCE
|
auth_manager_config.OAUTH_AUDIENCE = OAUTH_AUDIENCE
|
||||||
|
|
||||||
|
|
||||||
@@ -1548,6 +1552,33 @@ class OAuthManager:
|
|||||||
# Update the user object in memory as well,
|
# Update the user object in memory as well,
|
||||||
# to avoid problems with the ENABLE_OAUTH_GROUP_MANAGEMENT check below
|
# to avoid problems with the ENABLE_OAUTH_GROUP_MANAGEMENT check below
|
||||||
user.role = determined_role
|
user.role = determined_role
|
||||||
|
|
||||||
|
if auth_manager_config.OAUTH_UPDATE_NAME_ON_LOGIN:
|
||||||
|
username_claim = auth_manager_config.OAUTH_USERNAME_CLAIM
|
||||||
|
if username_claim:
|
||||||
|
new_name = user_data.get(username_claim)
|
||||||
|
if new_name and new_name != user.name:
|
||||||
|
Users.update_user_by_id(user.id, {"name": new_name}, db=db)
|
||||||
|
user.name = new_name
|
||||||
|
log.debug(f"Updated name for user {user.email}")
|
||||||
|
|
||||||
|
if auth_manager_config.OAUTH_UPDATE_EMAIL_ON_LOGIN:
|
||||||
|
email_claim = auth_manager_config.OAUTH_EMAIL_CLAIM
|
||||||
|
if email_claim:
|
||||||
|
new_email = user_data.get(email_claim)
|
||||||
|
if new_email and new_email.lower() != user.email.lower():
|
||||||
|
existing_user = Users.get_user_by_email(new_email, db=db)
|
||||||
|
if existing_user:
|
||||||
|
log.error(
|
||||||
|
f"Cannot update email to {new_email} for user {user.id} because it is already taken."
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
Auths.update_email_by_id(
|
||||||
|
user.id, new_email.lower(), db=db
|
||||||
|
)
|
||||||
|
user.email = new_email.lower()
|
||||||
|
log.debug(f"Updated email for user {user.id}")
|
||||||
|
|
||||||
# Update profile picture if enabled and different from current
|
# Update profile picture if enabled and different from current
|
||||||
if auth_manager_config.OAUTH_UPDATE_PICTURE_ON_LOGIN:
|
if auth_manager_config.OAUTH_UPDATE_PICTURE_ON_LOGIN:
|
||||||
picture_claim = auth_manager_config.OAUTH_PICTURE_CLAIM
|
picture_claim = auth_manager_config.OAUTH_PICTURE_CLAIM
|
||||||
|
|||||||
Reference in New Issue
Block a user