Coverage for src / fastapi_authly / schemas / user.py: 100%
47 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-20 11:54 +0800
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-20 11:54 +0800
1"""Data models for FastAPI Auth Module."""
3from datetime import datetime
4from typing import Optional, Dict, Any
5from pydantic import EmailStr
6from pydantic import ConfigDict, Field
7from pydantic import BaseModel as PydanticBaseModel
10class BaseModel(PydanticBaseModel):
11 model_config = ConfigDict(str_strip_whitespace=True)
14class UserBase(BaseModel):
15 """用户基础模型"""
16 email: EmailStr
17 username: str
18 full_name: Optional[str] = None
19 is_active: bool = True
20 is_superuser: bool = False
24class UserCreate(UserBase):
25 """用户创建模型"""
26 password: str
29class UserUpdate(BaseModel):
30 """用户更新模型"""
31 email: Optional[EmailStr] = None
32 username: Optional[str] = None
33 full_name: Optional[str] = None
34 password: Optional[str] = None
35 is_active: Optional[bool] = None
36 is_superuser: Optional[bool] = None
39class UserPublic(UserBase):
40 """用户公开模型"""
41 id: int
42 created_at: datetime
43 updated_at: datetime
45 model_config = ConfigDict(from_attributes=True)
48class UserLogin(BaseModel):
49 """ 用户登录传参模型 """
50 username: str
51 password: str
52 meta: Optional[Dict[str, Any]] = Field(default=None)
54class Token(BaseModel):
55 """令牌模型"""
56 access_token: str
57 token_type: str = "bearer"
58 refresh_token: Optional[str] = None
61class TokenData(BaseModel):
62 """令牌数据模型"""
63 sub: str
64 exp: Optional[datetime] = None
67class PasswordResetRequest(BaseModel):
68 """密码重置请求模型"""
69 email: EmailStr
72class PasswordReset(BaseModel):
73 """密码重置模型"""
74 token: str
75 new_password: str
78class EmailVerificationRequest(BaseModel):
79 """邮件验证请求模型"""
80 email: EmailStr
83class EmailVerification(BaseModel):
84 """邮件验证模型"""
85 token: str