2026-09-04 10:20:40 +08:00

45 lines
1.0 KiB
Python

"""Authentication and current-user API contracts."""
from pydantic import Field
from app.schemas.common import ApiSchema
class LoginRequest(ApiSchema):
username: str = Field(min_length=1, max_length=128)
password: str = Field(min_length=8, max_length=128)
class DingTalkLoginRequest(ApiSchema):
auth_code: str = Field(min_length=1, max_length=256)
class UserData(ApiSchema):
id: int
emp_no: str
email: str | None = None
name: str
dept: str | None = None
position: str | None = None
role: str
status: str
dingtalk_id: str | None = None
dingtalk_job_number: str | None = None
dingtalk_title: str | None = None
dingtalk_dept_id: int | None = None
dingtalk_is_dept_manager: bool = False
permissions: list[str] = Field(default_factory=list)
class TokenData(ApiSchema):
access_token: str
token_type: str = "bearer"
expires_in: int
user: UserData
class DingTalkConfigData(ApiSchema):
corp_id: str
app_key: str
agent_id: str