# app/schemas/token.py from pydantic import BaseModel, Field from typing import Optional from datetime import datetime, timezone, timedelta class Token(BaseModel): """令牌响应模型""" access_token: str token_type: str = "bearer" expires_in: Optional[int] = None refresh_token: Optional[str] = None class TokenResponse(Token): """带用户信息的令牌响应""" user: dict class TokenData(BaseModel): """令牌数据模型""" username: Optional[str] = None user_id: Optional[int] = None email: Optional[str] = None exp: Optional[int] = None iat: Optional[int] = None class TokenPayload(BaseModel): """令牌载荷""" sub: Optional[str] = None exp: Optional[datetime] = None class RefreshTokenRequest(BaseModel): """刷新令牌请求""" refresh_token: str class TokenCreate(BaseModel): """创建令牌请求""" user_id: int username: str email: str # 导出所有模型 __all__ = [ "Token", "TokenResponse", "TokenData", "TokenPayload", "RefreshTokenRequest", "TokenCreate" ]