"""认证 API schema。""" from __future__ import annotations from pydantic import BaseModel, ConfigDict class RegisterRequest(BaseModel): username: str = ... # min_length=1 由 pydantic v2 隐式保证 email: str = ... password: str = ... class LoginRequest(BaseModel): username: str = ... password: str = ... class RefreshRequest(BaseModel): refresh_token: str = ... class UserResponse(BaseModel): model_config = ConfigDict(from_attributes=True) id: str username: str email: str is_admin: bool permissions: list[str] = [] created_at: str class LoginResponse(BaseModel): access_token: str refresh_token: str token_type: str = "bearer" expires_in: int user: UserResponse class CurrentUser(BaseModel): """从 get_current_user 依赖注入的当前用户信息。""" user_id: str username: str email: str owner_scope: str # 当前等于 user_id is_admin: bool permissions: list[str] = [] class UpdateProfileRequest(BaseModel): """更新个人资料请求。""" email: str | None = None class ChangePasswordRequest(BaseModel): """修改密码请求。""" old_password: str new_password: str