porchlight/src/fastapi_oidc_op/config.py

42 lines
870 B
Python

# src/fastapi_oidc_op/config.py
from enum import StrEnum
from pydantic_settings import BaseSettings
class StorageBackend(StrEnum):
SQLITE = "sqlite"
MONGODB = "mongodb"
class Settings(BaseSettings):
model_config = {"env_prefix": "OIDC_OP_"}
# Core
issuer: str
debug: bool = False
# Storage
storage_backend: StorageBackend = StorageBackend.SQLITE
# SQLite
sqlite_path: str = "data/oidc_op.db"
# MongoDB
mongodb_uri: str = "mongodb://localhost:27017"
mongodb_database: str = "oidc_op"
# Management RP
manage_client_id: str = "manage-app"
# Session
session_secret: str | None = None # If None, a random secret is generated per process
# Magic links
invite_ttl: int = 86400 # seconds
# Signing keys
signing_key_path: str = "data/keys"
# Theme
theme: str = "default"