Fix admin post-login redirect to canonical /admin/

This commit is contained in:
dwindown
2026-04-01 18:17:24 +07:00
parent 90831963fc
commit 9a5f4873b0

View File

@@ -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)