From 365db5770ea9ec730df1c9564caaa2f72c67f332 Mon Sep 17 00:00:00 2001 From: LittleSharkQwQ <22088033@qq.com> Date: Tue, 9 Dec 2025 12:44:25 +0800 Subject: [PATCH] Optimize chats.py Fixed null pointer exceptions and permission validation in the delete_chat_by_id function, enhancing error handling and robustness. --- backend/open_webui/routers/chats.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/backend/open_webui/routers/chats.py b/backend/open_webui/routers/chats.py index 78cd8bdb1a..138610afdf 100644 --- a/backend/open_webui/routers/chats.py +++ b/backend/open_webui/routers/chats.py @@ -568,13 +568,15 @@ async def send_chat_message_event_by_id( async def delete_chat_by_id(request: Request, id: str, user=Depends(get_verified_user)): if user.role == "admin": chat = Chats.get_chat_by_id(id) - for tag in chat.meta.get("tags", []): - if Chats.count_chats_by_tag_name_and_user_id(tag, user.id) == 1: - Tags.delete_tag_by_name_and_user_id(tag, user.id) + if chat: + for tag in chat.meta.get("tags", []): + if Chats.count_chats_by_tag_name_and_user_id(tag, user.id) == 1: + Tags.delete_tag_by_name_and_user_id(tag, user.id) - result = Chats.delete_chat_by_id(id) - - return result + result = Chats.delete_chat_by_id(id) + return result + else: + return False else: if not has_permission( user.id, "chat.delete", request.app.state.config.USER_PERMISSIONS @@ -584,12 +586,15 @@ async def delete_chat_by_id(request: Request, id: str, user=Depends(get_verified detail=ERROR_MESSAGES.ACCESS_PROHIBITED, ) - chat = Chats.get_chat_by_id(id) - for tag in chat.meta.get("tags", []): - if Chats.count_chats_by_tag_name_and_user_id(tag, user.id) == 1: - Tags.delete_tag_by_name_and_user_id(tag, user.id) + chat = Chats.get_chat_by_id_and_user_id(id, user.id) + if chat: + for tag in chat.meta.get("tags", []): + if Chats.count_chats_by_tag_name_and_user_id(tag, user.id) == 1: + Tags.delete_tag_by_name_and_user_id(tag, user.id) - result = Chats.delete_chat_by_id_and_user_id(id, user.id) + result = Chats.delete_chat_by_id_and_user_id(id, user.id) + else: + return False return result