"""用户信息序列化(列表 / 创建 / 编辑 / 管理端接口共用)。""" from __future__ import annotations from ..models import User, UserDevice from ..permissions import get_user_permissions from ..schemas import UserInfo from .dc_auth_service import mask_device_id from .login_sms_service import mask_phone def to_user_info(user: User, device: UserDevice | None = None) -> UserInfo: device_id = str(device.device_id or "") if device is not None else "" return UserInfo( id=user.id, username=user.username, role=user.role, is_active=user.is_active, remark=user.remark or "", created_at=user.created_at, permissions=get_user_permissions(user), custom_permissions=user.custom_permissions, phone=str(user.phone or ""), phone_masked=mask_phone(user.phone), phone_bound_at=user.phone_bound_at, device_id=device_id, device_id_masked=mask_device_id(device_id), device_bound_at=device.bound_at if device is not None else None, device_last_used_at=device.last_used_at if device is not None else None, )