This commit is contained in:
fengchuanhn@gmail.com
2026-05-22 14:59:33 +08:00
parent 3c91a52aff
commit 5aafba8eb9
5 changed files with 40 additions and 2 deletions

View File

@@ -163,6 +163,19 @@ async def update_user(
return user
async def clear_device_serial(db: AsyncSession, user_id: int) -> User:
"""管理员解绑:将用户 device_serial 置空。"""
user = await db.get(User, user_id)
if user is None:
raise AdminUserError("用户不存在")
if not (user.device_serial or "").strip():
raise AdminUserError("该用户未绑定设备")
user.device_serial = ""
await db.flush()
await db.refresh(user)
return user
async def delete_user(db: AsyncSession, oem: User, user_id: int, *, actor_id: int) -> None:
if user_id == actor_id:
raise AdminUserError("不能删除当前登录账号")

View File

@@ -66,12 +66,18 @@ async def register_user(
if existing is not None:
raise AuthError("用户名已存在")
serial = _normalize_device_serial(device_serial)
if serial:
bound = await db.scalar(select(User).where(User.device_serial == serial))
if bound is not None:
raise AuthError("该电脑已绑定其它用户")
user = User(
username=username,
password_hash=hash_password(password),
role_id=0,
phone=None,
device_serial=_normalize_device_serial(device_serial),
device_serial=serial,
)
db.add(user)
await db.flush()