import re from pydantic import BaseModel, ConfigDict, model_validator from pydantic.alias_generators import to_camel from typing import Optional from exceptions.exception import ModelValidatorException class UserLogin(BaseModel): model_config = ConfigDict(alias_generator=to_camel) user_name: str password: str code: Optional[str] = None uuid: Optional[str] = None login_info: Optional[dict] = None captcha_enabled: Optional[bool] = None class UserRegister(BaseModel): model_config = ConfigDict(alias_generator=to_camel) username: str password: str confirm_password: str code: Optional[str] = None uuid: Optional[str] = None @model_validator(mode='after') def check_password(self) -> 'UserRegister': pattern = r'''^[^<>"'|\\]+$''' if self.password is None or re.match(pattern, self.password): return self else: raise ModelValidatorException(message="密码不能包含非法字符:< > \" ' \\ |") class Token(BaseModel): access_token: str token_type: str class CaptchaCode(BaseModel): model_config = ConfigDict(alias_generator=to_camel) captcha_enabled: bool register_enabled: bool img: str uuid: str class SmsCode(BaseModel): is_success: Optional[bool] = None sms_code: str session_id: str message: Optional[str] = None