Files
appfactory-portal/app/main.py
T
JiriUhlir 9916e4d833 Změny:
Přidaná centrální runtime konfigurace public URL, HTTPS a Google OAuth readiness v config.py (line 37).
Google OAuth přidaný jako volitelná další možnost přihlášení, bez nahrazení lokálního/Gitea loginu, v auth.py (line 128).
Default Google redirect URI se skládá z APPFACTORY_PORTAL_PUBLIC_URL + /auth/google/callback, bez hardcoded IP/localhost/domény.
Readiness JSON endpoint přidán na /portal/migration-readiness/auth-domain-config; vrací jen boolean hodnoty, žádné secrety, v migration_readiness.py (line 112).
UI sekce Auth & Domain Readiness přidaná do Migration Readiness v migration_readiness.py (line 41).
Audit event auth_domain_readiness.viewed se zapisuje při zobrazení readiness stránky v migration_readiness.py (line 133).
APPFACTORY_ENABLE_HTTPS se promítá i do secure session cookies v main.py (line 19).
2026-06-08 11:21:29 +02:00

43 lines
1.4 KiB
Python

from pathlib import Path
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from starlette.middleware.sessions import SessionMiddleware
from .config import read_env_bool, read_env_value
from .routes import alerting, apps, audit, auth, backups, deployments, health, incidents, jobs, migration_readiness, operations, scheduled_scripts, workers
def create_app() -> FastAPI:
app = FastAPI(title="CSBot Services Portal")
session_secret = read_env_value("PORTAL_SESSION_SECRET", "") or "dev-only-appfactory-session-secret"
app.add_middleware(
SessionMiddleware,
secret_key=session_secret,
same_site="lax",
https_only=read_env_bool("APPFACTORY_ENABLE_HTTPS"),
)
static_dir = Path(__file__).parent / "static"
app.mount("/static", StaticFiles(directory=static_dir), name="static")
app.include_router(health.router)
app.include_router(auth.router)
app.include_router(apps.router)
app.include_router(backups.router)
app.include_router(deployments.router)
app.include_router(incidents.router)
app.include_router(alerting.router)
app.include_router(migration_readiness.router)
app.include_router(operations.router)
app.include_router(scheduled_scripts.router)
app.include_router(jobs.router)
app.include_router(workers.router)
app.include_router(audit.router)
return app
app = create_app()