feat: account sessions and usable template editors

This commit is contained in:
Pigway
2026-10-02 08:43:07 +08:00
parent 186b56c495
commit 141849d682
12 changed files with 515 additions and 33 deletions
+15
View File
@@ -14,6 +14,7 @@ from fastapi.openapi.docs import get_swagger_ui_html
from fastapi.responses import FileResponse, JSONResponse, Response
from starlette.exceptions import HTTPException
from pigway_frame_flow.core.accounts import install_accounts, seed_accounts
from pigway_frame_flow.core.auth import require, seed_client
from pigway_frame_flow.core.registry import DeviceRegistry
from pigway_frame_flow.display.service import DisplayService
@@ -66,6 +67,7 @@ def create_app(settings=None, start_worker=True):
service = DisplayService(db, settings, registry, assets, renderer)
scheduler = Scheduler(service)
seed_client(db, settings.api_token)
seed_accounts(db, settings.config_dir)
for name in ["urllib3", "requests", "httpx", "httpcore"]:
logging.getLogger(name).setLevel(logging.CRITICAL)
@@ -88,6 +90,7 @@ def create_app(settings=None, start_worker=True):
lifespan=lifespan,
responses=error_responses,
)
install_accounts(app, db)
app.state.service = service
app.state.scheduler = scheduler
app.add_middleware(
@@ -99,6 +102,7 @@ def create_app(settings=None, start_worker=True):
"Content-Type",
"Idempotency-Key",
"X-Request-ID",
"X-CSRF-Token",
],
)
@@ -221,6 +225,7 @@ def create_app(settings=None, start_worker=True):
"scheduler": scheduler.healthy() if start_worker else True,
"authentication": bool(
db.one("SELECT client_id FROM clients WHERE enabled=1")
or db.one("SELECT username FROM users WHERE enabled=1")
),
}
good = all(checks.values())
@@ -616,6 +621,16 @@ def create_app(settings=None, start_worker=True):
)
return TemplateConfig(data=settings.sanitize(payload.data))
@app.delete(
"/api/v1/templates/{template_id}/config",
status_code=204,
tags=["Templates"],
dependencies=[Depends(require("settings:write"))],
)
def reset_template_config(template_id: str):
renderer.info(template_id)
db.execute("DELETE FROM template_config WHERE template_id=?", (template_id,))
@app.get(
"/api/v1/jobs",
response_model=list[Job],