2be0778ec7
- 后端:auth 路由(register/login/refresh/me)+ JWT + bcrypt 密码哈希 - 依赖注入:get_current_user + require_role 角色权限校验 - 跨数据库兼容:JSONBType(PG 用 JSONB,SQLite 用 JSON) - 测试:11 个认证测试 + 4 个健康检查测试 = 15 passed
47 lines
1.0 KiB
Python
47 lines
1.0 KiB
Python
"""认证相关 Pydantic schema。"""
|
|
|
|
from pydantic import BaseModel, EmailStr, Field
|
|
|
|
|
|
class LoginRequest(BaseModel):
|
|
"""登录请求。"""
|
|
|
|
email: EmailStr
|
|
password: str = Field(..., min_length=6, max_length=128)
|
|
|
|
|
|
class RegisterRequest(BaseModel):
|
|
"""注册请求。"""
|
|
|
|
email: EmailStr
|
|
password: str = Field(..., min_length=6, max_length=128)
|
|
name: str = Field(..., min_length=1, max_length=100)
|
|
tenant_name: str = Field(..., min_length=1, max_length=200)
|
|
role: str = Field(default="founder", description="角色:gp/partner/post_invest_lead/investor/founder/admin")
|
|
|
|
|
|
class TokenResponse(BaseModel):
|
|
"""Token 响应。"""
|
|
|
|
access_token: str
|
|
refresh_token: str
|
|
token_type: str = "bearer"
|
|
expires_in: int = Field(description="access token 有效期(秒)")
|
|
|
|
|
|
class RefreshRequest(BaseModel):
|
|
"""刷新 token 请求。"""
|
|
|
|
refresh_token: str
|
|
|
|
|
|
class UserInfo(BaseModel):
|
|
"""用户信息。"""
|
|
|
|
id: str
|
|
email: str
|
|
name: str
|
|
role: str
|
|
tenant_id: str
|
|
is_active: bool
|