Initial commit - FastAPI guest portal with Authentik OIDC, UniFi integration, and branding assets
This commit is contained in:
38
app/config.py
Normal file
38
app/config.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import os
|
||||
import json
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass
|
||||
class SiteConfig:
|
||||
id: str
|
||||
name: str
|
||||
unifi_host: str
|
||||
unifi_api_key: str
|
||||
unifi_site: str
|
||||
ssid: str
|
||||
default_duration_minutes: int = 1440
|
||||
|
||||
|
||||
@dataclass
|
||||
class AppConfig:
|
||||
authentik_host: str
|
||||
authentik_client_id: str
|
||||
authentik_client_secret: str
|
||||
portal_secret_key: str
|
||||
portal_base_url: str
|
||||
sites: dict[str, SiteConfig]
|
||||
|
||||
|
||||
def load_config() -> AppConfig:
|
||||
sites_raw = json.loads(os.environ["SITES"])
|
||||
sites = {s["id"]: SiteConfig(**s) for s in sites_raw}
|
||||
|
||||
return AppConfig(
|
||||
authentik_host=os.environ["AUTHENTIK_HOST"],
|
||||
authentik_client_id=os.environ["AUTHENTIK_CLIENT_ID"],
|
||||
authentik_client_secret=os.environ["AUTHENTIK_CLIENT_SECRET"],
|
||||
portal_secret_key=os.environ["PORTAL_SECRET_KEY"],
|
||||
portal_base_url=os.environ["PORTAL_BASE_URL"],
|
||||
sites=sites,
|
||||
)
|
||||
Reference in New Issue
Block a user