Files
MoviePilot/app/schemas/mfa.py

43 lines
1.1 KiB
Python

"""多因素认证 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