mirror of
https://github.com/complexcaresolutions/dak.c2s.git
synced 2026-03-17 18:23:42 +00:00
Passwords with special characters (@, &, etc.) broke the SQLAlchemy connection URL parsing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
# backend/app/config.py
|
|
from urllib.parse import quote_plus
|
|
|
|
from pydantic_settings import BaseSettings
|
|
from functools import lru_cache
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
# Database
|
|
DB_HOST: str = "localhost"
|
|
DB_PORT: int = 3306
|
|
DB_NAME: str = "dak_c2s"
|
|
DB_USER: str = "dak_c2s_admin"
|
|
DB_PASSWORD: str = ""
|
|
|
|
# JWT
|
|
JWT_SECRET_KEY: str = "change-me-in-production"
|
|
JWT_ALGORITHM: str = "HS256"
|
|
ACCESS_TOKEN_EXPIRE_MINUTES: int = 15
|
|
REFRESH_TOKEN_EXPIRE_DAYS: int = 7
|
|
|
|
# SMTP
|
|
SMTP_HOST: str = "smtp.complexcaresolutions.de"
|
|
SMTP_PORT: int = 465
|
|
SMTP_USER: str = "noreply@complexcaresolutions.de"
|
|
SMTP_PASSWORD: str = ""
|
|
SMTP_FROM: str = "noreply@complexcaresolutions.de"
|
|
|
|
# App
|
|
APP_NAME: str = "DAK Zweitmeinungs-Portal"
|
|
CORS_ORIGINS: str = "http://localhost:5173,https://dak.complexcaresolutions.de"
|
|
MAX_UPLOAD_SIZE: int = 20971520 # 20MB
|
|
|
|
@property
|
|
def database_url(self) -> str:
|
|
password = quote_plus(self.DB_PASSWORD)
|
|
return (
|
|
f"mysql+pymysql://{self.DB_USER}:{password}"
|
|
f"@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4"
|
|
)
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
env_file_encoding = "utf-8"
|
|
|
|
|
|
@lru_cache
|
|
def get_settings() -> Settings:
|
|
return Settings()
|