from pydantic_settings import BaseSettings from pydantic import Field from typing import Optional class Settings(BaseSettings): # Database database_url: str = Field(..., env="DATABASE_URL") # Redis redis_url: str = Field("redis://localhost:6379/0", env="REDIS_URL") # Auth secret_key: str = Field(..., env="SECRET_KEY") algorithm: str = "HS256" access_token_expire_minutes: int = 60 * 24 * 7 # 7 days # Admin account admin_username: str = Field("admin", env="ADMIN_USERNAME") admin_password: Optional[str] = Field(None, env="ADMIN_PASSWORD") # Base URL - used for OAuth callbacks base_url: str = Field("https://milevault.jarrett.eu", env="BASE_URL") # PocketID OIDC (optional) pocketid_issuer: Optional[str] = Field(None, env="POCKETID_ISSUER") pocketid_client_id: Optional[str] = Field(None, env="POCKETID_CLIENT_ID") pocketid_client_secret: Optional[str] = Field(None, env="POCKETID_CLIENT_SECRET") pocketid_allowed_group: Optional[str] = Field(None, env="POCKETID_ALLOWED_GROUP") # Files file_store_path: str = Field("/data/files", env="FILE_STORE_PATH") # Environment environment: str = Field("production", env="ENVIRONMENT") class Config: env_file = ".env" case_sensitive = False settings = Settings()