Refactor configuration and security features for improved development experience
- 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.
This commit is contained in:
@@ -3,21 +3,30 @@ from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
class Settings(BaseSettings):
|
||||
app_name: str = "TK Wiki Newsletter Admin"
|
||||
environment: str = "production"
|
||||
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 = "*"
|
||||
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")
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user