41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
from pydantic import BaseModel, Field
|
||
|
||
|
||
class SmsCodeRequest(BaseModel):
|
||
phone: str = Field(min_length=6, max_length=32)
|
||
|
||
|
||
class LoginRequest(BaseModel):
|
||
phone: str = Field(min_length=6, max_length=32)
|
||
code: str = Field(min_length=4, max_length=8)
|
||
|
||
|
||
class WechatLoginRequest(BaseModel):
|
||
# wx.login() 返回的 jscode,用于换 openid(可选,仅记录用途)
|
||
js_code: str | None = None
|
||
# button open-type="getPhoneNumber" 事件返回的 code,用于换手机号
|
||
phone_code: str | None = None
|
||
# mock 模式或跳过手机号服务时,前端可直接传手机号(生产可禁用)
|
||
phone: str | None = None
|
||
|
||
|
||
class CurrentUserResponse(BaseModel):
|
||
id: int
|
||
phone: str
|
||
name: str
|
||
job_title: str | None = None
|
||
unit_id: int | None = None
|
||
unit_name: str | None = None
|
||
department_id: int | None = None
|
||
department_name: str | None = None
|
||
status: str
|
||
roles: list[str]
|
||
permissions: list[str]
|
||
is_superuser: bool
|
||
|
||
|
||
class TokenResponse(BaseModel):
|
||
access_token: str
|
||
token_type: str = "bearer"
|
||
user: CurrentUserResponse
|