From 9a5f4873b03acc0caa077eac25bb8f33a7694b94 Mon Sep 17 00:00:00 2001 From: dwindown Date: Wed, 1 Apr 2026 18:17:24 +0700 Subject: [PATCH] Fix admin post-login redirect to canonical /admin/ --- app/admin.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/admin.py b/app/admin.py index f1befee..a67ee90 100644 --- a/app/admin.py +++ b/app/admin.py @@ -118,6 +118,11 @@ class EnvCredentialProvider(Provider): status_code=status_code, ) + @staticmethod + def _admin_home(request: Request) -> str: + """Use trailing slash to avoid mount redirect (which may emit absolute host).""" + return request.app.admin_path.rstrip("/") + "/" + async def login_view(self, request: Request): return self._template_response( request=request, @@ -150,7 +155,7 @@ class EnvCredentialProvider(Provider): }, ) - response = RedirectResponse(url=request.app.admin_path, status_code=HTTP_303_SEE_OTHER) + response = RedirectResponse(url=self._admin_home(request), status_code=HTTP_303_SEE_OTHER) expire = self.expire_seconds if remember_me == "on": expire = max(self.expire_seconds, 3600 * 24 * 30) @@ -183,7 +188,7 @@ class EnvCredentialProvider(Provider): request.state.admin = admin if path.endswith(self.login_path) and admin: - return RedirectResponse(url=request.app.admin_path, status_code=HTTP_303_SEE_OTHER) + return RedirectResponse(url=self._admin_home(request), status_code=HTTP_303_SEE_OTHER) return await call_next(request)