Fix admin post-login redirect to canonical /admin/
This commit is contained in:
@@ -118,6 +118,11 @@ class EnvCredentialProvider(Provider):
|
|||||||
status_code=status_code,
|
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):
|
async def login_view(self, request: Request):
|
||||||
return self._template_response(
|
return self._template_response(
|
||||||
request=request,
|
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
|
expire = self.expire_seconds
|
||||||
if remember_me == "on":
|
if remember_me == "on":
|
||||||
expire = max(self.expire_seconds, 3600 * 24 * 30)
|
expire = max(self.expire_seconds, 3600 * 24 * 30)
|
||||||
@@ -183,7 +188,7 @@ class EnvCredentialProvider(Provider):
|
|||||||
request.state.admin = admin
|
request.state.admin = admin
|
||||||
|
|
||||||
if path.endswith(self.login_path) and 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)
|
return await call_next(request)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user