- Admin login gate (docs/design/auth-reference.md): admin_user/admin_session/login_attempt
(migration 0015), one-time setup token logged once + conditional UPDATE, argon2id via
hash-wasm (WASM; compiled binary has no --allow-ffi), sha256-stored sessions in HttpOnly
SameSite=Lax cookie umt_session (fixed 12h TTL, soft revoke), HMAC-derived double-submit
CSRF, IP (5) + account (15) failure limits per 15 min, password change revokes other
sessions, optional TOTP with replay counter, AuditAction enum.
- Unified auth middleware: cookie session or Bearer API key -> c.var.actor
{type: admin|api_key, id, name, scopes}; requireScope works for both; requireAdminSession.
- ctx.secrets: AES-256-GCM, per-secret HKDF-SHA256 key from SECRET_MASTER_KEY, AAD bound
to (id, purpose); ctx.settings: 30s cache invalidated by settings.changed events.
- Endpoints: /auth/*, /settings, /api-keys, /secrets, /audit-events, library-roots,
downloader/media-server instances (+test), path-mappings (+verify),
PUT /sites/{id}/credentials, /engine/runs|stats|cancel (read-only openworkflow schema).
- SSE: PgEventBus (sse_event table, migration 0016, LISTEN/NOTIFY umt_events, catch-up by
seq, pruning, resync); EventBusPort is now async.
- Tests: login/rate limit/revocation/CSRF/TOTP, secrets round trip and no log leakage,
admin APIs against mock qB/Emby, SSE across two Deno subprocesses.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
19 lines
550 B
TypeScript
19 lines
550 B
TypeScript
export * from "./agent.ts";
|
|
export * from "./agent-events.ts";
|
|
export * from "./api.ts";
|
|
export * from "./assets.ts";
|
|
export * from "./auth.ts";
|
|
export * from "./capabilities-io.ts";
|
|
export * from "./capability.ts";
|
|
export * from "./common.ts";
|
|
export * from "./content.ts";
|
|
export * from "./events.ts";
|
|
export * from "./execution.ts";
|
|
export * from "./identity.ts";
|
|
export * from "./instances.ts";
|
|
export * from "./ops.ts";
|
|
export * from "./organization.ts";
|
|
export * from "./policy.ts";
|
|
export * from "./settings.ts";
|
|
export * from "./sources.ts";
|