Files
Egutierrez 0e3c5f5e84 feat: scaffold matrix_admin_panel v0.1.0 (issue 0163)
Wails + React + Mantine v7 admin panel for Matrix/Synapse. Replaces the
removed synapse-admin container. MAS OIDC PKCE login (loopback :8766) +
Synapse Admin API (users/rooms/sessions).

- MAS client: XSFD2SWA394DXRVJFTREAMY6J6 (public PKCE, no auth method).
- Backend: AdminService (Go) with Login/SetAdminToken/ListUsers/
  DeactivateUser/ResetUserPassword/ListRooms/DeleteRoom/GetUserDevices.
- Vendored helpers in internal/infra/ from registry:
  mas_oidc_loopback_go_infra, keyring_token_store_go_infra,
  synapse_admin_client_go_infra.
- Frontend: AppShell + sidebar tabs (Users/Rooms/Sessions). Sessions
  placeholder pending MAS admin API.
- Build verified: Linux + Windows.
2026-05-25 01:05:43 +02:00

2.8 KiB

name, lang, domain, version, description, tags, uses_functions, uses_types, framework, entry_point, dir_path, repo_url, icon
name lang domain version description tags uses_functions uses_types framework entry_point dir_path repo_url icon
matrix_admin_panel go infra 0.1.0 Panel admin Matrix propio (Wails + React + Mantine). Sustituye synapse-admin. MAS OIDC login + Synapse Admin API.
matrix
admin
synapse
mas
wails
react
mantine
infra
matrix-mas
client
mas_oidc_loopback_go_infra
keyring_token_store_go_infra
synapse_admin_client_go_infra
wails main.go projects/element_agents/apps/matrix_admin_panel https://gitea-dgg044oo04woo4ggcsws4gk0.organic-machine.com/dataforge/matrix_admin_panel.git
phosphor accent
shield-check #dc2626

Goal

Panel admin Matrix propio que sustituye el contenedor synapse-admin eliminado (issue 0162). Wails (Go) + React+Mantine. Login MAS OIDC PKCE (loopback puerto 8766) + Synapse Admin API.

Ejecutar

cd projects/element_agents/apps/matrix_admin_panel
wails dev                                  # hot-reload
wails build                                # binario Linux
wails build -platform windows/amd64        # binario Windows

Flow

  1. Login MAS OIDC (PKCE public client, mismo issuer que matrix_client_pc, distinto client_id).
  2. Tras login, modal AdminTokenModal pide el access_token Synapse de un user con admin: true (MAS no expone scope admin todavia).
  3. Validacion: GET /_synapse/admin/v2/users/{self} con el token. 200 = OK, se persiste en keyring con prefijo admin_token:.
  4. UI con AppShell.Navbar tabs: Users / Rooms / Sessions.
  5. Acciones row: Deactivate user (purge opcional), Reset password, Delete room (purge + block opcionales).

Arquitectura

main.go             entry: wails.Run + bind AdminService
admin_service.go    bindings (Login/SetAdminToken/ListUsers/...)
helpers.go          whoami helper
internal/infra/     vendored helpers del registry
  mas_oidc_loopback.go
  keyring_token_store.go
  synapse_admin_client.go
frontend/           React+Vite+TS+Mantine v7
  src/
    main.tsx        MantineProvider violet dark
    App.tsx         router (Login | Home)
    LoginScreen.tsx boton "Sign in with MAS"
    AdminTokenModal.tsx pide admin_token Synapse
    HomeScreen.tsx  AppShell + sidebar tabs
    UsersTab.tsx    tabla users + acciones
    RoomsTab.tsx    tabla rooms + acciones
    SessionsTab.tsx placeholder TBD

MAS client (registrado en production)

  • client_id: XSFD2SWA394DXRVJFTREAMY6J6
  • client_auth_method: none (PKCE public)
  • redirect URIs: http://127.0.0.1:8766/callback, http://localhost:8766/callback, https://admin-mas.organic-machine.com/callback, http://localhost:8090/callback

Capability growth log

  • v0.1.0 (2026-05-25) — baseline scaffold (issue 0163): Wails skeleton + login MAS OIDC + admin token modal + Users/Rooms/Sessions tabs (Sessions placeholder).