Skip to content

Commit 881dbf0

Browse files
committed
Use Depends injection to extract user name
1 parent 29119c8 commit 881dbf0

1 file changed

Lines changed: 8 additions & 9 deletions

File tree

src/blueapi/service/main.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
)
1919
from fastapi.datastructures import Address
2020
from fastapi.middleware.cors import CORSMiddleware
21+
from fastapi.requests import HTTPConnection
2122
from fastapi.responses import RedirectResponse, StreamingResponse
2223
from fastapi.security import OAuth2AuthorizationCodeBearer
2324
from observability_utils.tracing import (
@@ -161,6 +162,11 @@ def inner(request: Request, access_token: str = Depends(oauth_scheme)):
161162
return inner
162163

163164

165+
def _user(request: HTTPConnection) -> str | None:
166+
user = getattr(request.state, "decoded_access_token", {})
167+
return user.get("fedid", None)
168+
169+
164170
TRACER = get_tracer("interface")
165171

166172

@@ -283,18 +289,11 @@ def submit_task(
283289
response: Response,
284290
task_request: Annotated[TaskRequest, Body(..., examples=[example_task_request])],
285291
runner: Annotated[WorkerDispatcher, Depends(_runner)],
292+
user: Annotated[str, Depends(_user)],
286293
) -> TaskResponse:
287294
"""Submit a task to the worker."""
288295
try:
289-
# Extract user from jwt if using OIDC (if jwt exists)
290-
access_token: dict[str, Any] | None = getattr(
291-
request.state, "decoded_access_token", None
292-
)
293-
if access_token:
294-
user: str = access_token.get("fedid", "Unknown")
295-
else:
296-
user = "Unknown"
297-
296+
user = user or "UNKNOWN"
298297
task_id: str = runner.run(interface.submit_task, task_request, {"user": user})
299298
response.headers["Location"] = f"{request.url}/{task_id}"
300299
return TaskResponse(task_id=task_id)

0 commit comments

Comments
 (0)