v2.4.1: 修复 2FA 登录和前端数据加载问题

- 修复登录接口 response_model 导致 2FA 返回格式验证失败(500错误)
- 修复 showProfile 未调用 loadTwofaStatus 导致 2FA 状态一直显示加载中
- 修复 hideOthers 默认值为 false 确保管理员可查看所有数据
- 删除重复的 doLogin 函数
- 删除残留的代码片段修复 JavaScript 语法错误
This commit is contained in:
OP
2026-07-02 18:04:39 +08:00
parent 056c4defec
commit a0c57e0f21
6 changed files with 436 additions and 10 deletions

View File

@@ -35,7 +35,7 @@ async def register(req: RegisterRequest, db: AsyncSession = Depends(get_db)):
return RegisterResponse(message="注册请求已提交,等待管理员审批")
@router.post("/login", response_model=TokenResponse)
@router.post("/login")
async def login(
req: LoginRequest,
request: Request,
@@ -81,6 +81,17 @@ async def login(
if user.status == "disabled":
raise HTTPException(status_code=403, detail="账户已被禁用")
clear_login_failures(ip, account)
# 检查是否启用 2FA
if user.two_factor_enabled and user.two_factor_secret:
# 生成临时 token等待 2FA 验证
from app.core.security import create_token
temp_token = create_token(
{"sub": str(user.id), "type": "2fa_pending"},
timedelta(minutes=5)
)
return {"require_2fa": True, "temp_token": temp_token}
return TokenResponse(
access_token=create_access_token(user.id),
refresh_token=create_refresh_token(user.id),