diff --git a/backend/open_webui/models/users.py b/backend/open_webui/models/users.py index 5c196281f..605299528 100644 --- a/backend/open_webui/models/users.py +++ b/backend/open_webui/models/users.py @@ -271,6 +271,24 @@ class UsersTable: except Exception: return None + def update_user_settings_by_id(self, id: str, updated: dict) -> Optional[UserModel]: + try: + with get_db() as db: + user_settings = db.query(User).filter_by(id=id).first().settings + + if user_settings is None: + user_settings = {} + + user_settings.update(updated) + + db.query(User).filter_by(id=id).update({"settings": user_settings}) + db.commit() + + user = db.query(User).filter_by(id=id).first() + return UserModel.model_validate(user) + except Exception: + return None + def delete_user_by_id(self, id: str) -> bool: try: # Remove User from Groups diff --git a/backend/open_webui/routers/users.py b/backend/open_webui/routers/users.py index ddcaef767..872212d3c 100644 --- a/backend/open_webui/routers/users.py +++ b/backend/open_webui/routers/users.py @@ -153,7 +153,7 @@ async def get_user_settings_by_session_user(user=Depends(get_verified_user)): async def update_user_settings_by_session_user( form_data: UserSettings, user=Depends(get_verified_user) ): - user = Users.update_user_by_id(user.id, {"settings": form_data.model_dump()}) + user = Users.update_user_settings_by_id(user.id, form_data.model_dump()) if user: return user.settings else: