feat: redirect to OIDC authorization after login when pending

This commit is contained in:
Johan Lundberg 2026-02-16 13:34:06 +01:00
parent d8c891af89
commit 18e9e7f2b5
No known key found for this signature in database
GPG key ID: A6C152738D03C7D1
2 changed files with 90 additions and 2 deletions

View file

@ -13,6 +13,17 @@ from fastapi_oidc_op.userid import generate_unique_userid
router = APIRouter(tags=["authn"])
def _login_redirect_target(request: Request) -> str:
"""Determine where to redirect after successful login.
If there's a pending OIDC authorization request, redirect to complete it.
Otherwise, redirect to credential management.
"""
if "oidc_auth_request" in request.session:
return "/authorization/complete"
return "/manage/credentials"
@router.get("/login", response_class=HTMLResponse)
async def login_page(request: Request) -> HTMLResponse:
templates = request.app.state.templates
@ -46,7 +57,7 @@ async def login_password(
request.session["username"] = user.username
response = Response()
response.headers["HX-Redirect"] = "/manage/credentials"
response.headers["HX-Redirect"] = _login_redirect_target(request)
return response
@ -150,5 +161,5 @@ async def login_webauthn_complete(request: Request) -> Response:
request.session["username"] = user.username
response = Response()
response.headers["HX-Redirect"] = "/manage/credentials"
response.headers["HX-Redirect"] = _login_redirect_target(request)
return response