diff --git a/backend/open_webui/routers/folders.py b/backend/open_webui/routers/folders.py index 046a2d8834..eb07c112b9 100644 --- a/backend/open_webui/routers/folders.py +++ b/backend/open_webui/routers/folders.py @@ -287,7 +287,12 @@ async def get_shared_folders( ############################ -@router.get('/{id}', response_model=None) +class FolderResponse(FolderModel): + access_grants: list[dict] = [] + write_access: bool = False + + +@router.get('/{id}', response_model=FolderResponse) async def get_folder_by_id( request: Request, id: str, user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session) ): @@ -295,13 +300,21 @@ async def get_folder_by_id( folder = await Folders.get_folder_by_id_and_user_id(id, user.id, db=db) if folder: grants = await AccessGrants.get_grants_by_resource('folder', id, db=db) - return {**folder.model_dump(), 'access_grants': [g.model_dump() for g in grants]} + return FolderResponse( + **folder.model_dump(), + access_grants=[g.model_dump() for g in grants], + write_access=True, + ) # Check shared access folder = await Folders.get_folder_by_id(id, db=db) if folder and (user.role == 'admin' or await _has_folder_access(user.id, folder, 'read', db)): grants = await AccessGrants.get_grants_by_resource('folder', id, db=db) - return {**folder.model_dump(), 'access_grants': [g.model_dump() for g in grants]} + return FolderResponse( + **folder.model_dump(), + access_grants=[g.model_dump() for g in grants], + write_access=user.role == 'admin' or await _has_folder_access(user.id, folder, 'write', db), + ) raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, diff --git a/src/lib/components/chat/Placeholder.svelte b/src/lib/components/chat/Placeholder.svelte index e8e0b11bdf..603861eae8 100644 --- a/src/lib/components/chat/Placeholder.svelte +++ b/src/lib/components/chat/Placeholder.svelte @@ -109,7 +109,7 @@ $: folderReadOnly = $selectedFolder != null && $selectedFolder.user_id !== $user?.id && - $selectedFolder.permission !== 'write'; + !$selectedFolder.write_access;