45 lines
1.0 KiB
Python
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
|