feat(admin): claims + impersonation #43

Closed
opened 2026-05-05 12:45:32 +00:00 by zaelgohary · 1 comment
Member

Admin panel:
https://forge.ourworld.tf/lhumina_code/home/src/branch/development/meetings/instructions_whiteboard_collab.md

Split into 3 PRs:

  • PR1 (foundation): is_admin gate + hash routing + proxy passthroughs
  • PR2 (domains): roles/claims/org-groups + proxy user CRUD
  • PR3 (operations): admin/logs tabs + impersonation + audit

Whiteboard adaptation tracked separately.

Admin panel: https://forge.ourworld.tf/lhumina_code/home/src/branch/development/meetings/instructions_whiteboard_collab.md Split into 3 PRs: - PR1 (foundation): is_admin gate + hash routing + proxy passthroughs - PR2 (domains): roles/claims/org-groups + proxy user CRUD - PR3 (operations): admin/logs tabs + impersonation + audit Whiteboard adaptation tracked separately.
Author
Member

Status update — admin tour walkthrough on development.

PRs 47 / 48 / 49 / 50 all merged; admin panel is feature-complete. Captured a 27-shot tour against make devstart with the proxy seeded (2 roles, 3 claims, 2 groups, 3 memberships) so every proxy-backed tab renders real data.

One small fix landed in this run: messages_tab.rs now fans out channel.list across every workspace before populating the filter — the previous call passed no workspace_id and tripped a -32602. Patch in the working tree, ready for a follow-up PR if needed.

Desktop (1400 × 900, dark)

Tab Screenshot
Overview overview
Workspaces workspaces
Channels channels
Users users
Users + Create modal users-create
Messages messages
Documents documents
Workspace Groups ws-groups
Org Groups org-groups
Roles roles
Claims — Single User claims-single
Claims — Compare claims-compare
Claims — Why No Access claims-path
Admin Ops admin-ops
Admin + Shutdown confirm shutdown
Logs logs
Impersonation Audit audit
Impersonation picker modal picker
Impersonation banner active banner
API Docs (collapsed) api-docs
API Docs (expanded) api-docs-x

Mobile (390 × 844)

View Screenshot
Overview m-overview
Drawer m-drawer
Users m-users
Org Groups m-org

Light theme

View Screenshot
Overview l-overview
Users l-users

Spec lives at tests/playwright/specs/admin_tour.spec.ts — re-runnable via npx playwright test specs/admin_tour.spec.ts against a make devstart stack with dx serve --features standalone on :8080.

Status update — admin tour walkthrough on `development`. PRs 47 / 48 / 49 / 50 all merged; admin panel is feature-complete. Captured a 27-shot tour against `make devstart` with the proxy seeded (2 roles, 3 claims, 2 groups, 3 memberships) so every proxy-backed tab renders real data. One small fix landed in this run: `messages_tab.rs` now fans out `channel.list` across every workspace before populating the filter — the previous call passed no `workspace_id` and tripped a `-32602`. Patch in the working tree, ready for a follow-up PR if needed. ### Desktop (1400 × 900, dark) | Tab | Screenshot | |---|---| | Overview | ![overview](https://forge.ourworld.tf/attachments/8812548e-28cb-4eb3-9392-340e19563ed1) | | Workspaces | ![workspaces](https://forge.ourworld.tf/attachments/f6625dad-736c-4046-95b2-c9d3cf146e7c) | | Channels | ![channels](https://forge.ourworld.tf/attachments/8f372610-eab1-45aa-93a8-7df305b0a3f6) | | Users | ![users](https://forge.ourworld.tf/attachments/70e37e16-90f7-4da9-8533-bde938834668) | | Users + Create modal | ![users-create](https://forge.ourworld.tf/attachments/fdb2404a-2484-4c41-aed7-a30fb614c45f) | | Messages | ![messages](https://forge.ourworld.tf/attachments/9b698346-5747-49ba-b8c0-9e9676a5ae07) | | Documents | ![documents](https://forge.ourworld.tf/attachments/980b521f-225f-414f-b9a3-a178d81de157) | | Workspace Groups | ![ws-groups](https://forge.ourworld.tf/attachments/6baf5d30-20b6-4edc-8e65-27e70b6c4b56) | | Org Groups | ![org-groups](https://forge.ourworld.tf/attachments/0d29afb0-ae3f-4e50-8d68-ba0f2163cf12) | | Roles | ![roles](https://forge.ourworld.tf/attachments/5a61c1eb-5ddb-42cc-ad9f-78904281f378) | | Claims — Single User | ![claims-single](https://forge.ourworld.tf/attachments/457daa76-6c85-4b6a-b485-88b39add660f) | | Claims — Compare | ![claims-compare](https://forge.ourworld.tf/attachments/4a22e736-73fb-44c3-981a-e71562cb074e) | | Claims — Why No Access | ![claims-path](https://forge.ourworld.tf/attachments/e132a95a-02a9-48b4-938d-a3519d90f23d) | | Admin Ops | ![admin-ops](https://forge.ourworld.tf/attachments/89df75db-7ae4-438d-a88f-49b534ee68d7) | | Admin + Shutdown confirm | ![shutdown](https://forge.ourworld.tf/attachments/fbad9614-a59c-4794-8256-f4ba194589a2) | | Logs | ![logs](https://forge.ourworld.tf/attachments/3f8d5707-356f-46ec-afeb-91f5b8a8334d) | | Impersonation Audit | ![audit](https://forge.ourworld.tf/attachments/8dad3a70-8bae-46bc-bb50-670becf8802b) | | Impersonation picker modal | ![picker](https://forge.ourworld.tf/attachments/339e0377-c44f-428b-946d-3f9424ae1409) | | Impersonation banner active | ![banner](https://forge.ourworld.tf/attachments/653fbd9d-9608-4b77-9515-ff32d0e2e1ee) | | API Docs (collapsed) | ![api-docs](https://forge.ourworld.tf/attachments/b918e95c-661b-43b8-8320-681e03198b69) | | API Docs (expanded) | ![api-docs-x](https://forge.ourworld.tf/attachments/e6427152-fc3a-455c-bbab-3cf617434647) | ### Mobile (390 × 844) | View | Screenshot | |---|---| | Overview | ![m-overview](https://forge.ourworld.tf/attachments/1c110dcb-0990-4981-bfcf-108d4c2f5e3e) | | Drawer | ![m-drawer](https://forge.ourworld.tf/attachments/035ecece-720c-490b-bb6c-4526f0cf8640) | | Users | ![m-users](https://forge.ourworld.tf/attachments/07f604d2-03bd-43bb-80c4-250a7971f9b1) | | Org Groups | ![m-org](https://forge.ourworld.tf/attachments/ad918233-16d9-4d60-a13f-5cd75e05cb7b) | ### Light theme | View | Screenshot | |---|---| | Overview | ![l-overview](https://forge.ourworld.tf/attachments/07d7aacf-e55b-4e7d-b622-41a5866f469e) | | Users | ![l-users](https://forge.ourworld.tf/attachments/35e8ea74-72c7-4b13-8deb-0616318829c3) | Spec lives at `tests/playwright/specs/admin_tour.spec.ts` — re-runnable via `npx playwright test specs/admin_tour.spec.ts` against a `make devstart` stack with `dx serve --features standalone` on `:8080`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_collab#43
No description provided.