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)