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

1"""Data models for FastAPI Auth Module.""" 

2 

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 

8 

9 

10class BaseModel(PydanticBaseModel): 

11 model_config = ConfigDict(str_strip_whitespace=True) 

12 

13 

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 

21 

22 

23 

24class UserCreate(UserBase): 

25 """用户创建模型""" 

26 password: str 

27 

28 

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 

37 

38 

39class UserPublic(UserBase): 

40 """用户公开模型""" 

41 id: int 

42 created_at: datetime 

43 updated_at: datetime 

44 

45 model_config = ConfigDict(from_attributes=True) 

46 

47 

48class UserLogin(BaseModel): 

49 """ 用户登录传参模型 """ 

50 username: str 

51 password: str 

52 meta: Optional[Dict[str, Any]] = Field(default=None) 

53 

54class Token(BaseModel): 

55 """令牌模型""" 

56 access_token: str 

57 token_type: str = "bearer" 

58 refresh_token: Optional[str] = None 

59 

60 

61class TokenData(BaseModel): 

62 """令牌数据模型""" 

63 sub: str 

64 exp: Optional[datetime] = None 

65 

66 

67class PasswordResetRequest(BaseModel): 

68 """密码重置请求模型""" 

69 email: EmailStr 

70 

71 

72class PasswordReset(BaseModel): 

73 """密码重置模型""" 

74 token: str 

75 new_password: str 

76 

77 

78class EmailVerificationRequest(BaseModel): 

79 """邮件验证请求模型""" 

80 email: EmailStr 

81 

82 

83class EmailVerification(BaseModel): 

84 """邮件验证模型""" 

85 token: str