chore: remove placeholder progress message from initial commit
This commit is contained in:
@@ -183,7 +183,11 @@ async def update_share(
|
||||
|
||||
|
||||
@router.post("/{share_token}/access")
|
||||
async def access_shared_content(share_token: str, password: Optional[str] = None):
|
||||
async def access_shared_content(
|
||||
share_token: str,
|
||||
password: Optional[str] = None,
|
||||
subfolder_id: Optional[int] = None,
|
||||
):
|
||||
share = await Share.get_or_none(token=share_token)
|
||||
if not share:
|
||||
raise HTTPException(
|
||||
@@ -212,7 +216,37 @@ async def access_shared_content(share_token: str, password: Optional[str] = None
|
||||
result["file"] = await FileOut.from_tortoise_orm(file)
|
||||
result["type"] = "file"
|
||||
elif share.folder_id:
|
||||
folder = await Folder.get_or_none(id=share.folder_id, is_deleted=False)
|
||||
# Start with the shared root folder
|
||||
target_folder_id = share.folder_id
|
||||
|
||||
# If subfolder_id is requested, verify it's a descendant of the shared folder
|
||||
if subfolder_id:
|
||||
subfolder = await Folder.get_or_none(id=subfolder_id, is_deleted=False)
|
||||
if not subfolder:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND, detail="Subfolder not found"
|
||||
)
|
||||
|
||||
# Verify hierarchy
|
||||
current = subfolder
|
||||
is_descendant = False
|
||||
while current.parent_id:
|
||||
if current.parent_id == share.folder_id:
|
||||
is_descendant = True
|
||||
break
|
||||
current = await Folder.get_or_none(id=current.parent_id)
|
||||
if not current:
|
||||
break
|
||||
|
||||
if not is_descendant:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail="Access denied to this folder"
|
||||
)
|
||||
|
||||
target_folder_id = subfolder_id
|
||||
|
||||
folder = await Folder.get_or_none(id=target_folder_id, is_deleted=False)
|
||||
if not folder:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND, detail="Folder not found"
|
||||
|
||||
Reference in New Issue
Block a user