This commit is contained in:
Timothy Jaeryang Baek
2026-08-20 13:13:51 -07:00
parent 18c604baa9
commit 7d4747dfd7
4 changed files with 52 additions and 33 deletions
+37
View File
@@ -8,7 +8,9 @@ import time
import uuid
# local imports
from open_webui.env import ENABLE_ADMIN_CHAT_ACCESS
from open_webui.internal.db import Base, JSONField, get_async_db_context
from open_webui.models.access_grants import AccessGrants
from open_webui.models.automations import AutomationRun
from open_webui.models.chat_messages import ChatMessage, ChatMessages
from open_webui.models.folders import Folders
@@ -1634,6 +1636,41 @@ class ChatTable:
except Exception:
return None
async def get_chat_by_id_for_user(
self,
id: str,
user,
db: AsyncSession | None = None,
) -> ChatModel | None:
chat = await self.get_chat_by_id_and_user_id(id, user.id, db=db)
if chat:
return chat
chat = await self.get_chat_by_id(id, db=db)
if not chat:
return None
if user.role == 'admin' and (ENABLE_ADMIN_CHAT_ACCESS or is_internal_chat(chat.meta)):
return chat
if await AccessGrants.has_access(
user_id=user.id,
resource_type='shared_chat',
resource_id=id,
permission='read',
db=db,
):
return chat
if chat.folder_id:
from open_webui.utils.access_control.folders import has_folder_access
folder = await Folders.get_folder_by_id(chat.folder_id, db=db)
if folder and await has_folder_access(user.id, folder, 'read', db):
return chat
return None
async def is_chat_owner(self, id: str, user_id: str, db: AsyncSession | None = None) -> bool:
"""
Lightweight ownership check — uses EXISTS subquery instead of loading