Files
echo/.references/references-only/reference vault/memory/sessions/2026-05-28-unifi-dashboard-multi-controller.md
2026-06-05 00:49:20 -05:00

38 lines
1.8 KiB
Markdown

---
type: session
date: 2026-05-28
tags:
- unifi-access-dashboard
- refactor
- multi-controller
- access
- mpm
---
# 2026-05-28 — UniFi Access Dashboard: multi-controller refactor
## Context
Single-controller Flask app needed to support a client whose on-site server has LAN reach to multiple UniFi Access controllers. They want one dashboard showing badge events from all of them.
## Decisions made
- Per-controller webhook URLs (`/api/unifi-access/<controller_id>`), legacy alias kept for back-compat.
- Auto-register webhooks from the UI when adding a controller (drops the manual Python snippet from the old README).
- **No admin auth, plaintext tokens in SQLite** — Jason explicitly chose LAN-only trust over the recommended Fernet + ADMIN_PASSWORD setup. Documented in [[unifi-access-dashboard]] so it doesn't get re-litigated.
- Skipped CSV export for now (recommended bundle but Jason declined).
- Auto-sync interval shortened from 6h to 1h late in the session.
## Files changed
`app.py` (major rewrite), `static/index.html` (controllers modal + Source column + filter), `requirements.txt` (+pytz), `README.md` (UI-driven setup flow), `.env.example`, deleted `static/uad-landing.html`.
## Folded-in fixes
- `datetime.utcnow()``datetime.now(timezone.utc)`
- Cutoff string-compare bug (now sanitized to `HH:MM`)
- Pinned `pytz` (was imported but undeclared)
## Not committed
End of session: changes are on `main` working tree only. No commit or push. Run `docker compose up -d --build` to deploy.
## Open items
- Existing webhook on Access side won't be cleaned up if user removes the seeded Default controller and re-adds via UI → duplicate events. Covered in project notes as a known gotchas.
- Cross-controller identity merge (same human across sites) is explicitly out of scope.