diff --git a/server.py b/server.py
index 3e7f86c..bdb9faa 100644
--- a/server.py
+++ b/server.py
@@ -3261,28 +3261,48 @@ async def update_storage(storage_id: int, req: UpdateStorageRequest, user: User
@app.delete("/storage/{storage_id}")
-async def remove_storage(storage_id: int, user: User = Depends(get_required_user)):
+async def remove_storage(storage_id: int, request: Request, user: User = Depends(get_optional_user)):
"""Remove a storage provider."""
+ # Support both Bearer token and cookie auth
+ username = user.username if user else get_user_from_cookie(request)
+ if not username:
+ raise HTTPException(401, "Not authenticated")
+
storage = await db.get_storage_by_id(storage_id)
if not storage:
raise HTTPException(404, "Storage provider not found")
- if storage["username"] != user.username:
+ if storage["username"] != username:
raise HTTPException(403, "Not authorized")
success = await db.remove_user_storage(storage_id)
if not success:
raise HTTPException(500, "Failed to remove storage provider")
+ # Return empty string for HTMX to remove the element
+ if wants_html(request):
+ return HTMLResponse("")
+
return {"message": "Storage provider removed"}
@app.post("/storage/{storage_id}/test")
-async def test_storage(storage_id: int, request: Request, user: User = Depends(get_required_user)):
+async def test_storage(storage_id: int, request: Request, user: User = Depends(get_optional_user)):
"""Test storage provider connectivity."""
+ # Support both Bearer token and cookie auth
+ username = user.username if user else get_user_from_cookie(request)
+ if not username:
+ if wants_html(request):
+ return HTMLResponse('Not authenticated', status_code=401)
+ raise HTTPException(401, "Not authenticated")
+
storage = await db.get_storage_by_id(storage_id)
if not storage:
+ if wants_html(request):
+ return HTMLResponse('Storage not found', status_code=404)
raise HTTPException(404, "Storage provider not found")
- if storage["username"] != user.username:
+ if storage["username"] != username:
+ if wants_html(request):
+ return HTMLResponse('Not authorized', status_code=403)
raise HTTPException(403, "Not authorized")
config = storage["config"] if isinstance(storage["config"], dict) else json.loads(storage["config"])