diff --git a/backend/src/tv/router.py b/backend/src/tv/router.py index fdf96f5..01b44e2 100644 --- a/backend/src/tv/router.py +++ b/backend/src/tv/router.py @@ -103,11 +103,17 @@ def get_season_requests(db: DbSessionDependency) -> list[RichSeasonRequest]: return tv.service.get_all_season_requests(db=db) -@router.delete("/seasons/requests/{request_id}", status_code=status.HTTP_204_NO_CONTENT, - dependencies=[Depends(current_active_user)]) -def delete_season_request(db: DbSessionDependency, request_id: SeasonRequestId): - tv.service.delete_season_request(db=db, season_request_id=request_id) - return +@router.delete("/seasons/requests/{request_id}", status_code=status.HTTP_204_NO_CONTENT, ) +def delete_season_request(db: DbSessionDependency, user: Annotated[User, Depends(current_active_user)], + request_id: SeasonRequestId): + request = tv.service.get_season_request_by_id(db=db, season_request_id=request_id) + if user.is_superuser or request.requested_by.id == user.id: + tv.service.delete_season_request(db=db, season_request_id=request_id) + log.info(f"User {user.id} deleted season request {request_id}.") + else: + log.warning(f"User {user.id} tried to delete season request {request_id} but is not authorized.") + return JSONResponse(status_code=status.HTTP_403_FORBIDDEN, + content={"message": "Not authorized to delete this request."}) diff --git a/backend/src/tv/service.py b/backend/src/tv/service.py index 1f2f4bf..e5f7111 100644 --- a/backend/src/tv/service.py +++ b/backend/src/tv/service.py @@ -31,6 +31,9 @@ def add_season_request(db: Session, season_request: SeasonRequest) -> None: tv.repository.add_season_request(db=db, season_request=season_request) +def get_season_request_by_id(db: Session, season_request_id: SeasonRequestId) -> SeasonRequest | None: + return tv.repository.get_season_request(db=db, season_request_id=season_request_id) + def update_season_request(db: Session, season_request: SeasonRequest) -> None: tv.repository.update_season_request(db=db, season_request=season_request) diff --git a/web/.prettierrc b/web/.prettierrc index b19073e..c5382df 100644 --- a/web/.prettierrc +++ b/web/.prettierrc @@ -3,10 +3,10 @@ "singleQuote": true, "trailingComma": "none", "printWidth": 100, - "plugins": [ - "prettier-plugin-svelte", - "prettier-plugin-tailwindcss" - ], + "plugins": [ + "prettier-plugin-svelte", + "prettier-plugin-tailwindcss" + ], "overrides": [ { "files": "*.svelte", diff --git a/web/package.json b/web/package.json index 19b78ff..b3c84df 100644 --- a/web/package.json +++ b/web/package.json @@ -32,13 +32,13 @@ "eslint-config-prettier": "^10.0.1", "eslint-plugin-svelte": "^2.46.1", "globals": "^15.14.0", - "mode-watcher": "^1.0.7", + "mode-watcher": "^1.0.7", "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.10", "svelte": "^5.0.0", "svelte-check": "^4.0.0", - "svelte-sonner": "^0.3.28", + "svelte-sonner": "^0.3.28", "tailwind-merge": "^3.2.0", "tailwind-variants": "^1.0.0", "tailwindcss": "^3.4.17", diff --git a/web/src/app.html b/web/src/app.html index da99290..0a61570 100644 --- a/web/src/app.html +++ b/web/src/app.html @@ -7,8 +7,6 @@ %sveltekit.head%
-