Skip to content

Commit e4d7aab

Browse files
committed
Make API endpoints that change storage superuser-only for now
1 parent 609ad09 commit e4d7aab

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

backend/btrixcloud/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def main() -> None:
182182

183183
crawl_manager = CrawlManager()
184184

185-
storage_ops = init_storages_api(org_ops, crawl_manager)
185+
storage_ops = init_storages_api(org_ops, crawl_manager, current_active_user)
186186

187187
background_job_ops = init_background_jobs_api(
188188
app,

backend/btrixcloud/storages.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,7 @@ def _parse_json(line) -> dict:
885885

886886

887887
# ============================================================================
888-
def init_storages_api(org_ops, crawl_manager):
888+
def init_storages_api(org_ops, crawl_manager, user_dep: Callable):
889889
"""API for updating storage for an org"""
890890

891891
storage_ops = StorageOps(org_ops, crawl_manager)
@@ -913,23 +913,37 @@ def get_available_storages(org: Organization = Depends(org_owner_dep)):
913913
"/custom-storage", tags=["organizations"], response_model=AddedResponseName
914914
)
915915
async def add_custom_storage(
916-
storage: S3StorageIn, org: Organization = Depends(org_owner_dep)
916+
storage: S3StorageIn,
917+
org: Organization = Depends(org_owner_dep),
918+
user: User = Depends(user_dep),
917919
):
920+
if not user.is_superuser:
921+
raise HTTPException(status_code=403, detail="Not Allowed")
922+
918923
return await storage_ops.add_custom_storage(storage, org)
919924

920925
@router.delete(
921926
"/custom-storage/{name}", tags=["organizations"], response_model=DeletedResponse
922927
)
923928
async def remove_custom_storage(
924-
name: str, org: Organization = Depends(org_owner_dep)
929+
name: str,
930+
org: Organization = Depends(org_owner_dep),
931+
user: User = Depends(user_dep),
925932
):
933+
if not user.is_superuser:
934+
raise HTTPException(status_code=403, detail="Not Allowed")
935+
926936
return await storage_ops.remove_custom_storage(name, org)
927937

928938
@router.post("/storage", tags=["organizations"], response_model=UpdatedResponse)
929939
async def update_storage_ref(
930940
storage: OrgStorageRef,
931941
org: Organization = Depends(org_owner_dep),
942+
user: User = Depends(user_dep),
932943
):
944+
if not user.is_superuser:
945+
raise HTTPException(status_code=403, detail="Not Allowed")
946+
933947
return await storage_ops.update_storage_ref(storage, org)
934948

935949
@router.post(
@@ -938,7 +952,11 @@ async def update_storage_ref(
938952
async def update_storage_replica_refs(
939953
storage: OrgStorageReplicaRefs,
940954
org: Organization = Depends(org_owner_dep),
955+
user: User = Depends(user_dep),
941956
):
957+
if not user.is_superuser:
958+
raise HTTPException(status_code=403, detail="Not Allowed")
959+
942960
return await storage_ops.update_storage_replica_refs(storage, org)
943961

944962
return storage_ops

0 commit comments

Comments
 (0)