"""多因素认证 API 输出模型。""" from typing import Optional from pydantic import BaseModel, Field, RootModel from app.schemas.common import JsonData class PasskeyOptions(RootModel[dict[str, JsonData]]): """浏览器 WebAuthn API 使用的动态选项。""" class OtpGenerateData(BaseModel): """OTP 绑定密钥和验证 URI。""" secret: str = Field(description="OTP 密钥") uri: str = Field(description="OTP 验证 URI") class MfaStatusData(BaseModel): """用户是否启用多因素认证。""" enabled: bool = Field(description="是否启用多因素认证") class PasskeyStartData(BaseModel): """PassKey 注册或认证的启动数据。""" options: PasskeyOptions = Field(description="WebAuthn 选项") transaction_token: str = Field(description="一次性事务令牌") class PasskeyInfo(BaseModel): """当前用户绑定的 PassKey 摘要。""" id: int name: str created_at: Optional[str] = None last_used_at: Optional[str] = None aaguid: Optional[str] = None transports: Optional[str] = None