51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
"""
|
|
Configuration de l'application FastAPI.
|
|
"""
|
|
|
|
from pydantic_settings import BaseSettings
|
|
import os
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Configuration globale de l'application"""
|
|
|
|
# Base de données
|
|
db_host: str = os.getenv("DB_HOST", "localhost")
|
|
db_port: int = int(os.getenv("DB_PORT", "3306"))
|
|
db_name: str = os.getenv("DB_NAME", "evoting_db")
|
|
db_user: str = os.getenv("DB_USER", "evoting_user")
|
|
db_password: str = os.getenv("DB_PASSWORD", "evoting_pass123")
|
|
|
|
# Sécurité
|
|
secret_key: str = os.getenv(
|
|
"SECRET_KEY",
|
|
"your-secret-key-change-in-production-12345"
|
|
)
|
|
algorithm: str = "HS256"
|
|
access_token_expire_minutes: int = 30
|
|
|
|
# Application
|
|
debug: bool = os.getenv("DEBUG", "false").lower() == "true"
|
|
app_name: str = "E-Voting System API"
|
|
app_version: str = "0.1.0"
|
|
|
|
# Cryptographie
|
|
elgamal_p: int = 23 # Nombre premier (prototype)
|
|
elgamal_g: int = 5 # Générateur
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
case_sensitive = False
|
|
extra = "ignore" # Ignorer les variables d'env non définies
|
|
|
|
@property
|
|
def database_url(self) -> str:
|
|
"""Construire l'URL de connection à la base de données"""
|
|
return (
|
|
f"mysql+pymysql://{self.db_user}:{self.db_password}"
|
|
f"@{self.db_host}:{self.db_port}/{self.db_name}"
|
|
)
|
|
|
|
|
|
settings = Settings()
|