Initial commit - FastAPI guest portal with Authentik OIDC, UniFi integration, and branding assets

This commit is contained in:
Roger Joys
2026-03-15 14:46:47 -07:00
commit 78aac8f6ba
16 changed files with 661 additions and 0 deletions

38
app/config.py Normal file
View 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,
)