Files
forge/claude_artifacts/principal-20260827-175448.md
T

51 lines
2.2 KiB
Markdown
Raw Normal View History

2026-08-29 12:55:39 +03:00
# principal — Auth/RBAC + Token page + Filtered Excel export
**Date:** 2026-08-27
**Request:** (1) Users with roles to log into the portal; (2) an API-token creation page;
(3) save tickets to Excel honoring the active filters.
## 1. Roles & capability model
Internal role keys (hierarchy `viewer < pm < lead < admin`), display labels:
| key | label | Tasks (board/tickets/closed) | Reports (stats/insights) | Add users | API tokens |
|---|---|:--:|:--:|:--:|:--:|
| `viewer` | Viewer | ✓ | — | — | — |
| `pm` | PM | ✓ | ✓ | — | — |
| `lead` | Project Leadership | ✓ | ✓ | ✓ | — |
| `admin` | Admin | ✓ | ✓ | ✓ | ✓ |
- `/api/config` + `/api/stats` stay viewer-accessible (board needs colours/colleagues/counts).
- `/api/sync` stays token-only (extension), unchanged.
- Server enforces per-route via `requireRole(min)`; client hides nav/pages a role can't use
(defense-in-depth; the server is the gate).
- Seeded `AUTH_USER` account is forced to role `admin` (bootstrap).
## 2. Route → minimum role
| Route | Min role |
|---|---|
| `GET /api/tickets`, `/api/tickets/:number`, `/api/stats`, `/api/config` | viewer |
| `GET /api/analytics/*`, `/api/insights` | pm |
| `GET/POST /api/users` (list/create) | lead |
| `GET/POST /api/tokens` (list/create) | admin |
## 3. Token page
Admin-only page: list existing tokens (label, id, created, last-used, expiry, revoked) +
create (returns the raw `fg_…` once) + revoke. Replaces the `x-admin-key` HTTP gate with the
admin session role; the `mint-token` CLI stays.
## 4. Filtered Excel export
Board/tickets "Export Excel" button → exports the CURRENTLY FILTERED rows client-side via
`write-excel-file` (the Husky template's dep). Columns: Number, State, Assignee, Group, Brand,
Market, Requester, Lifetime(d), Days-in-state, Last activity, Jira status, Cost, Link.
## Plan / routing
- dba/engineer — `app_users.role` (additive), user CRUD, `requireRole`, route gating.
- security — audit the authz before merge (public domain).
- engineer — Admin page (Users + Tokens tabs), export util, role-gated nav.
- verifier — gate the result.
## Next
engineer — implement server RBAC + user/token endpoints, then the client Admin page + export.