79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Auth Schema - 认证相关Schema
|
|
"""
|
|
from datetime import datetime, date
|
|
from typing import Optional, List
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from app.base_schema import CSTDatetime
|
|
|
|
|
|
class LoginRequest(BaseModel):
|
|
"""登录请求"""
|
|
username: str = Field(..., description="用户名")
|
|
password: str = Field(..., description="密码")
|
|
|
|
|
|
class TokenResponse(BaseModel):
|
|
"""Token响应"""
|
|
accessToken: str = Field(..., description="访问令牌")
|
|
refreshToken: str = Field(..., description="刷新令牌")
|
|
tokenType: str = Field(default="bearer", description="令牌类型")
|
|
expireTime: int = Field(..., description="访问令牌过期时间(秒)")
|
|
|
|
|
|
class RefreshTokenRequest(BaseModel):
|
|
"""刷新Token请求"""
|
|
refresh_token: str = Field(..., description="刷新令牌")
|
|
|
|
|
|
class TokenData(BaseModel):
|
|
"""Token数据"""
|
|
user_id: Optional[str] = None
|
|
username: Optional[str] = None
|
|
|
|
|
|
class LoginUserInfo(BaseModel):
|
|
"""登录用户信息"""
|
|
id: str
|
|
username: str
|
|
email: Optional[str] = None
|
|
mobile: Optional[str] = None
|
|
avatar: Optional[str] = None
|
|
name: Optional[str] = None
|
|
gender: int = 0
|
|
gender_display: Optional[str] = None
|
|
user_type: int = 1
|
|
user_type_display: Optional[str] = None
|
|
user_status: int = 1
|
|
user_status_display: Optional[str] = None
|
|
birthday: Optional[date] = None
|
|
city: Optional[str] = None
|
|
address: Optional[str] = None
|
|
bio: Optional[str] = None
|
|
is_superuser: bool = False
|
|
is_active: bool = True
|
|
dept_id: Optional[str] = None
|
|
post_id: Optional[str] = None
|
|
post_name: Optional[str] = None
|
|
manager_id: Optional[str] = None
|
|
role_ids: Optional[List[str]] = None
|
|
last_login: Optional[CSTDatetime] = None
|
|
last_login_ip: Optional[str] = None
|
|
last_login_type: Optional[str] = None
|
|
sort: int = 0
|
|
is_deleted: bool = False
|
|
sys_create_datetime: Optional[CSTDatetime] = None
|
|
sys_update_datetime: Optional[CSTDatetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class LoginResponse(BaseModel):
|
|
"""登录响应"""
|
|
user: LoginUserInfo = Field(..., description="用户信息")
|
|
token: TokenResponse = Field(..., description="令牌信息")
|