61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
from pydantic import BaseModel
|
|
|
|
class UserLogin(BaseModel):
|
|
# 登录请求模型
|
|
username: str
|
|
password: str
|
|
device_id: str # 设备标识,用于限制单设备登录
|
|
|
|
class UserRegister(BaseModel):
|
|
# 注册请求模型
|
|
username: str
|
|
password: str
|
|
confirm_password: str
|
|
email: str | None = None # Optional for backward compatibility, but required for verification
|
|
code: str | None = None # 新增:验证码
|
|
device_id: str = "unknown_device" # 兼容旧前端,设为默认值,建议前端传入
|
|
|
|
class SendVerificationCodeRequest(BaseModel):
|
|
email: str
|
|
|
|
class VerifyEmailRequest(BaseModel):
|
|
username: str
|
|
code: str
|
|
|
|
class ForgotPasswordRequest(BaseModel):
|
|
email: str
|
|
|
|
class ResetPasswordRequest(BaseModel):
|
|
email: str # 新增:必须传 email 配合验证码
|
|
token: str # 这里是 6 位数字验证码
|
|
new_password: str
|
|
confirm_password: str
|
|
|
|
class Token(BaseModel):
|
|
# 登录/注册成功返回的令牌模型
|
|
access_token: str
|
|
token_type: str
|
|
username: str
|
|
|
|
class UserLogout(BaseModel):
|
|
# 登出请求模型
|
|
username: str
|
|
device_id: str
|
|
|
|
class UserHeartbeat(BaseModel):
|
|
# 心跳请求模型(更新最近在线时间)
|
|
username: str
|
|
device_id: str
|
|
|
|
class VerifyRequest(BaseModel):
|
|
"""验证请求模型"""
|
|
username: str
|
|
device_id: str
|
|
timestamp: int
|
|
|
|
class VerifyResponse(BaseModel):
|
|
"""验证响应模型"""
|
|
valid: bool
|
|
username: str | None = None
|
|
expire_date: str | None = None
|