diff --git a/app/admin.py b/app/admin.py index 4baca75..19e2bc5 100644 --- a/app/admin.py +++ b/app/admin.py @@ -86,6 +86,7 @@ class EnvCredentialProvider(Provider): await super().register(app) # Keep explicit assignment for compatibility across fastapi-admin versions. app.login_provider = self + app.get("/")(self.index_view) app.get(self.login_path)(self.login_view) app.post(self.login_path)(self.login) app.get(self.logout_path)(self.logout) @@ -136,6 +137,16 @@ class EnvCredentialProvider(Provider): continue return f"{admin_path}{getattr(request.app.login_provider, 'login_path', '/login')}" + @staticmethod + def _login_url(request: Request) -> str: + return request.app.admin_path.rstrip("/") + "/login" + + async def index_view(self, request: Request): + # fastapi-admin has no default "/" page in this setup. + if getattr(request.state, "admin", None): + return RedirectResponse(url=self._admin_home(request), status_code=HTTP_303_SEE_OTHER) + return RedirectResponse(url=self._login_url(request), status_code=HTTP_303_SEE_OTHER) + async def login_view(self, request: Request): return self._template_response( request=request,