Expand description
The operations dashboard’s per-app view: what each OAuth application holds on this server, and what it did.
Part of crate::dashboard — surface 3 in docs/web-surfaces.md,
behind the same operator session as every other control there — kept in
its own file because it is its own panel group. Three reads, each
filterable by client_id and by account, and the two logs by how far
back:
- Live logins, from the grant store. Beside each: what it may do now, and whether policy would issue it a token now. Neither is stored; both are asked of the ceiling and the gate at the moment the panel is drawn, so a ceiling narrowed or a policy loaded a second ago shows here.
- Refusals, from the evaluation log.
- Writes, from the write log.
The two logs are read through their stores rather than out of the write-ahead log, and a store that cannot list its rows answers unreachable rather than empty: a deployment that keeps no log and one that refused nothing are different facts.
Beside the reads there is one control: ending every login an
application holds, here or on one account. It is the answer to an
application whose keys leaked, and it is not the answer to an
application that should not be here — that is a denyClient policy,
written from surface 2, which stops the same logins working while it
stands and lets them work again when it lifts. This ends them for good
and says nothing about whether the application may sign in again.
Structs§
- AppFilter
- What every route here narrows on. Both empty lists everything.
- EndLogins
Body - What
POST /dashboard/api/apps/end-loginstakes. - Login
View 🔒 - One live login, as the panel lists it.
Functions§
- end_
logins 🔒 POST /dashboard/api/apps/end-logins- logins 🔒
GET /dashboard/api/apps/logins- refusals 🔒
GET /dashboard/api/apps/refusals- routes
- Builds the per-app routes, merged into the dashboard’s own router.
- writes 🔒
GET /dashboard/api/apps/writes