improved redirect upon login

This commit is contained in:
Christian Krakau-Louis
2025-03-25 14:56:21 +01:00
parent 398663595d
commit 6beaa30e25
+6 -4
View File
@@ -26,13 +26,12 @@ def get_current_user(request: Request):
return request.session.get("user")
def require_login(func):
"""Decorator to require login for particular endpoints."""
@wraps(func)
async def wrapper(request: Request, *args, **kwargs):
if not request.session.get("user"):
# Not logged in => redirect to /login
# Save original URL in session before redirecting to login
request.session["redirect_after_login"] = str(request.url)
return RedirectResponse(url="/login", status_code=status.HTTP_302_FOUND)
# User is logged in => proceed
return await func(request, *args, **kwargs)
return wrapper
@@ -55,7 +54,10 @@ async def auth(request: Request):
token = await oauth.authentik.authorize_access_token(request)
userinfo = token.get("userinfo")
request.session["user"] = dict(userinfo)
return RedirectResponse(url="/ui")
# Get original destination or fallback
redirect_url = request.session.pop("redirect_after_login", "/ui")
return RedirectResponse(url=redirect_url)
@router.get("/logout")
async def logout(request: Request):