From 881dbf0a52e4e32ed92daf813d674c3b7a1ada02 Mon Sep 17 00:00:00 2001 From: Peter Holloway Date: Fri, 17 Apr 2026 16:21:11 +0100 Subject: [PATCH] Use Depends injection to extract user name --- src/blueapi/service/main.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/blueapi/service/main.py b/src/blueapi/service/main.py index 81f9f849e..0f79bf73b 100644 --- a/src/blueapi/service/main.py +++ b/src/blueapi/service/main.py @@ -18,6 +18,7 @@ ) from fastapi.datastructures import Address from fastapi.middleware.cors import CORSMiddleware +from fastapi.requests import HTTPConnection from fastapi.responses import RedirectResponse, StreamingResponse from fastapi.security import OAuth2AuthorizationCodeBearer from observability_utils.tracing import ( @@ -161,6 +162,11 @@ def inner(request: Request, access_token: str = Depends(oauth_scheme)): return inner +def _user(request: HTTPConnection) -> str | None: + user = getattr(request.state, "decoded_access_token", {}) + return user.get("fedid", None) + + TRACER = get_tracer("interface") @@ -283,18 +289,11 @@ def submit_task( response: Response, task_request: Annotated[TaskRequest, Body(..., examples=[example_task_request])], runner: Annotated[WorkerDispatcher, Depends(_runner)], + user: Annotated[str, Depends(_user)], ) -> TaskResponse: """Submit a task to the worker.""" try: - # Extract user from jwt if using OIDC (if jwt exists) - access_token: dict[str, Any] | None = getattr( - request.state, "decoded_access_token", None - ) - if access_token: - user: str = access_token.get("fedid", "Unknown") - else: - user = "Unknown" - + user = user or "UNKNOWN" task_id: str = runner.run(interface.submit_task, task_request, {"user": user}) response.headers["Location"] = f"{request.url}/{task_id}" return TaskResponse(task_id=task_id)