| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- from typing import Any, Dict, List, Optional, Union
- from pydantic import AnyHttpUrl, validator
- from pydantic_settings import BaseSettings
- class Settings(BaseSettings):
- PROJECT_NAME: str = "Unified Authentication Platform"
- API_V1_STR: str = "/api/v1"
-
- # Database
- MYSQL_SERVER: str = "localhost"
- MYSQL_USER: str = "root"
- MYSQL_PASSWORD: str = "secret"
- MYSQL_DB: str = "uap_db"
- MYSQL_PORT: int = 3306
- DATABASE_URI: Optional[str] = None
- @validator("DATABASE_URI", pre=True)
- def assemble_db_connection(cls, v: Optional[str], values: Dict[str, Any]) -> Any:
- if isinstance(v, str):
- return v
- return f"mysql://{values.get('MYSQL_USER')}:{values.get('MYSQL_PASSWORD')}@{values.get('MYSQL_SERVER')}:{values.get('MYSQL_PORT')}/{values.get('MYSQL_DB')}"
- # Redis
- REDIS_HOST: str = "localhost"
- REDIS_PORT: int = 6379
- REDIS_DB: int = 0
- REDIS_PASSWORD: Optional[str] = None
-
- # Security
- SECRET_KEY: str = "change_me_in_production"
- ALGORITHM: str = "HS256"
- ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
- ACCESS_TOKEN_EXPIRE_MINUTES_LONG: int = 43200 # 30 days
-
- # CORS
- BACKEND_CORS_ORIGINS: List[AnyHttpUrl] = []
- @validator("BACKEND_CORS_ORIGINS", pre=True)
- def assemble_cors_origins(cls, v: Union[str, List[str]]) -> Union[List[str], str]:
- if isinstance(v, str) and not v.startswith("["):
- return [i.strip() for i in v.split(",")]
- elif isinstance(v, (list, str)):
- return v
- raise ValueError(v)
- # Captcha
- CAPTCHA_EXPIRE_SECONDS: int = 600
- # SMS
- # SMS_PROVIDER: str = "mock" # Options: "mock", "aliyun"
- SMS_PROVIDER: str = "aliyun"
- ALIYUN_ACCESS_KEY_ID: Optional[str] = "LTAI5tDScnqnCTKVPwLgHCqS"
- ALIYUN_ACCESS_KEY_SECRET: Optional[str] = "cRr1ThS29pycEiZ3nvCokZjswMEYP3"
- ALIYUN_SMS_SIGN_NAME: Optional[str] = "速通互联验证服务"
- ALIYUN_SMS_TEMPLATE_CODE: Optional[str] = "100001"
-
- # MinIO
- MINIO_ENDPOINT: str = "https://api.hnyunzhu.com:9004"
- MINIO_ACCESS_KEY: str = "1jC3nmjfWAyMGJ3pinbT"
- MINIO_SECRET_KEY: str = "6FHE9lzeQ6rZ3wIXSA9jGu8pGf49vgwT18NJ9XpO"
- MINIO_BUCKET_NAME: str = "unified-message-files"
- MINIO_DB_BACKUP_BUCKET_NAME: str = "unified-db-backups"
- MINIO_DISTRIBUTION_BUCKET_NAME: str = "unified-application-distribution"
- MINIO_UPDATE_BUCKET_NAME: str = "app-updates" # 公开读桶,用于自建更新文件 update/
- MINIO_SECURE: bool = False
-
- class Config:
- case_sensitive = True
- env_file = ".env"
- settings = Settings()
|