“单设备登录(同端互斥)”功能和后台全局用户配置
This commit is contained in:
@@ -399,6 +399,45 @@ async def update_user_admin_status(
|
||||
return {"message": "ok"}
|
||||
|
||||
|
||||
@router.put("/users/{user_id}/single-device-login-override")
|
||||
async def update_single_device_login_override(
|
||||
user_id: str,
|
||||
body: dict,
|
||||
admin: User = Depends(get_admin_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""设置用户级单设备登录覆盖。
|
||||
|
||||
body.override: True=强制启用, False=强制禁用, None=跟随全局
|
||||
"""
|
||||
override = body.get("override")
|
||||
if override is not None:
|
||||
override = bool(override)
|
||||
# None 表示跟随全局
|
||||
await db.execute(
|
||||
update(User).where(User.id == user_id).values(single_device_login_override=override)
|
||||
)
|
||||
await db.flush()
|
||||
label = "跟随全局" if override is None else ("强制启用" if override else "强制禁用")
|
||||
await log_operation(
|
||||
db,
|
||||
admin.id,
|
||||
admin.username,
|
||||
f"单设备登录设置: {label}",
|
||||
"PUT",
|
||||
f"/admin/users/{user_id}/single-device-login-override",
|
||||
detail=json.dumps(
|
||||
{
|
||||
"user_id": user_id,
|
||||
"override": override,
|
||||
},
|
||||
ensure_ascii=False,
|
||||
),
|
||||
)
|
||||
await db.commit()
|
||||
return {"message": "ok"}
|
||||
|
||||
|
||||
@router.put("/users/{user_id}/frontend-kind", response_model=AdminUserOut)
|
||||
async def update_user_frontend_kind(
|
||||
user_id: str,
|
||||
|
||||
Reference in New Issue
Block a user