| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- """
- Authentication schemas for request/response validation.
- Defines Pydantic models for user registration, login, and token management.
- """
- from pydantic import BaseModel, EmailStr, Field
- from typing import Optional, TYPE_CHECKING
- from datetime import datetime
- class UserRegister(BaseModel):
- """User registration request schema."""
- username: str = Field(..., min_length=3, max_length=50, description="用户名,3-50个字符")
- email: EmailStr = Field(..., description="有效的邮箱地址")
- password: str = Field(..., min_length=8, max_length=100, description="密码,至少8个字符")
- class UserLogin(BaseModel):
- """User login request schema."""
- username: str = Field(..., description="用户名")
- password: str = Field(..., description="密码")
- class UserResponse(BaseModel):
- """User response schema."""
- id: str = Field(..., description="用户ID")
- username: str = Field(..., description="用户名")
- email: str = Field(..., description="邮箱")
- role: str = Field(..., description="用户角色")
- created_at: datetime = Field(..., description="创建时间")
-
- class Config:
- from_attributes = True
- class TokenResponse(BaseModel):
- """Token response schema."""
- access_token: str = Field(..., description="访问令牌")
- refresh_token: str = Field(..., description="刷新令牌")
- token_type: str = Field(default="bearer", description="令牌类型")
- user: UserResponse = Field(..., description="用户信息")
- class TokenRefresh(BaseModel):
- """Token refresh request schema."""
- refresh_token: str = Field(..., description="刷新令牌")
- class TokenPayload(BaseModel):
- """JWT token payload schema."""
- sub: str = Field(..., description="用户ID")
- username: str = Field(..., description="用户名")
- email: str = Field(..., description="邮箱")
- role: str = Field(..., description="角色")
- exp: datetime = Field(..., description="过期时间")
- iat: datetime = Field(..., description="签发时间")
- type: str = Field(..., description="令牌类型: access 或 refresh")
|