2023-02-07 08:48:41 +08:00
|
|
|
|
from pydantic import BaseModel, constr
|
2023-02-07 16:09:57 +08:00
|
|
|
|
from typing import Union
|
2023-02-07 08:48:41 +08:00
|
|
|
|
|
|
|
|
|
EMailRegex = constr(regex="^[a-zA-Z0-9_-]+@fecr.com.cn$")
|
|
|
|
|
passwordRegex = constr(regex="^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8,}$")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ImageCaptchaRes(BaseModel):
|
|
|
|
|
captcha_id: str
|
|
|
|
|
img_data: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LoginReqBody(BaseModel):
|
|
|
|
|
email: EMailRegex = "xxxx@fecr.com.cn"
|
|
|
|
|
password: passwordRegex = "包含大小写字母和数字,长度8-16位"
|
|
|
|
|
captcha_id: str
|
|
|
|
|
captcha_code: str
|
|
|
|
|
|
|
|
|
|
|
2023-02-07 16:09:57 +08:00
|
|
|
|
class EmailSendReqBody(BaseModel):
|
|
|
|
|
email: EMailRegex = "xxxx@fecr.com.cn"
|
|
|
|
|
|
|
|
|
|
|
2023-02-07 08:48:41 +08:00
|
|
|
|
class UserInfo(BaseModel):
|
|
|
|
|
id: str
|
|
|
|
|
email: str
|
2023-02-07 16:09:57 +08:00
|
|
|
|
name: Union[str, None]
|
|
|
|
|
avatar: Union[str, None]
|
|
|
|
|
role: Union[str, None]
|
|
|
|
|
department: Union[str, None]
|
|
|
|
|
post: Union[str, None]
|
|
|
|
|
auth_data: Union[str, None]
|
2023-02-07 08:48:41 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LoginResBody(UserInfo):
|
|
|
|
|
access_token: str
|
2023-02-07 16:09:57 +08:00
|
|
|
|
token_type: str
|
2023-02-07 08:48:41 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RegisterReqBody(BaseModel):
|
|
|
|
|
email: EMailRegex
|
|
|
|
|
password: passwordRegex
|
|
|
|
|
email_verify_code: str
|
2023-02-07 16:09:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TokenData(BaseModel):
|
|
|
|
|
id: str
|
|
|
|
|
name: Union[str, None]
|
|
|
|
|
role: Union[str, None]
|
|
|
|
|
department: Union[str, None]
|
|
|
|
|
post: Union[str, None]
|
|
|
|
|
auth_data: Union[str, None]
|