11
This commit is contained in:
@@ -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("不能删除当前登录账号")
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user