local_config_schema.py 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. from pydantic import BaseModel, field_validator
  2. from typing import Optional
  3. class LocalConfigPutRequest(BaseModel):
  4. sso_enable_redirect: Optional[bool] = None
  5. cas_base_url: Optional[str] = None
  6. app_public_base_url: Optional[str] = None
  7. frontend_base_url: Optional[str] = None
  8. sso_service_path: Optional[str] = None
  9. sso_login_url: Optional[str] = None
  10. sso_logout_url: Optional[str] = None
  11. admin_api_key: Optional[str] = None
  12. @field_validator("cas_base_url", "app_public_base_url", "frontend_base_url", "sso_login_url", "sso_logout_url")
  13. @classmethod
  14. def validate_url(cls, v: Optional[str]) -> Optional[str]:
  15. if v is not None and v != "" and not (v.startswith("http://") or v.startswith("https://")):
  16. raise ValueError("URL 必须以 http:// 或 https:// 开头")
  17. return v
  18. @field_validator("admin_api_key")
  19. @classmethod
  20. def validate_admin_api_key(cls, v: Optional[str]) -> Optional[str]:
  21. if v is not None and v != "" and len(v) < 16:
  22. raise ValueError("密钥长度不能少于 16 个字符")
  23. return v
  24. class LocalConfigResponse(BaseModel):
  25. code: int = 0
  26. message: str = "success"
  27. data: Optional[dict] = None