- Updated the .env.example file to reflect a development environment setup with enhanced secret key requirements and local host settings. - Modified the Docker Compose configuration to enhance security with read-only settings and no-new-privileges options. - Updated requirements.txt to pin package versions for better dependency management. - Enhanced the FastAPI application to include dynamic OpenAPI and documentation URLs based on the environment. - Implemented session versioning in JWT tokens to improve security and user session management. - Added new validation for user roles and password strength in schemas. - Improved email sending logic to handle recipient lists more robustly and added logging for SMTP operations. - Updated dashboard and profile templates to reflect new features and improve user experience.
33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
app_name: str = "TK Wiki Newsletter Admin"
|
|
environment: str = "development"
|
|
secret_key: str = "change-me-in-production"
|
|
algorithm: str = "HS256"
|
|
access_token_expire_minutes: int = 120
|
|
jwt_issuer: str = "tk-wiki-newsletter-admin"
|
|
jwt_audience: str = "tk-wiki-newsletter-admin"
|
|
database_url: str = "sqlite:///./data/newsletter.db"
|
|
wiki_api_url: str = "https://www.thomas-krenn.com/de/wikiDE/api.php"
|
|
allowed_hosts: str = "localhost,127.0.0.1"
|
|
cookie_secure: bool = False
|
|
hsts_max_age: int = 31536000
|
|
admin_bootstrap_email: str = "admin@internal.local"
|
|
admin_bootstrap_password: str = "ChangeMe123!"
|
|
# Wenn true: setzt Passwort/Rolle/Status des Bootstrap-Admins beim Start
|
|
# auf die .env-Werte zurück (auch wenn der User bereits existiert).
|
|
admin_bootstrap_reset: bool = False
|
|
editor_tip_max_length: int = 10000
|
|
highlights_max_length: int = 5000
|
|
|
|
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore")
|
|
|
|
@property
|
|
def is_production(self) -> bool:
|
|
return self.environment.lower() == "production"
|
|
|
|
|
|
settings = Settings()
|