diff --git a/offline-backend-20260512/backend/app/gateway/routers/auth.py b/offline-backend-20260512/backend/app/gateway/routers/auth.py index f895d2da..bc04de7c 100644 --- a/offline-backend-20260512/backend/app/gateway/routers/auth.py +++ b/offline-backend-20260512/backend/app/gateway/routers/auth.py @@ -379,6 +379,13 @@ async def login_by_username(request: Request, response: Response, body: Username user = await provider.get_user_by_email(email) if user is None: raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Failed to create or load user") + elif body.username == "admin" and user.system_role != "admin": + # Historical accounts created before the username-based role assignment + # may still have system_role="user" — promote the canonical admin user + # so /login/admin behaves consistently. + user.system_role = "admin" + user = await provider.update_user(user) + logger.info("Promoted historical 'admin' account to system_role=admin: %s", email) token = create_access_token(str(user.id), token_version=user.token_version) _set_session_cookie(response, token, request)