Problem
Approving a new MAAP user is currently two discrete steps in two different
admin tools:
- MAAP API member record — set
status (suspended → active) and role via
the Console Users admin (or WP admin).
- Keycloak — assign JupyterHub group(s) (
JupyterHub MAAP User,
Basic User, GPU User, Admin) in the Keycloak admin console so the user
can actually launch a workspace.
Missing either step leaves the user half-provisioned (active member with no hub
access, or hub roles on a suspended account). With CAS decommissioned and
member auto-create now happening on first Keycloak login, the Console is the
natural single control point.
Proposal
One "Review User" modal in the Console Users admin combining both systems:
| Field |
Backed by |
Notes |
| Status |
MAAP API (POST /members/<user>/status) |
activation email fires on activate (Hub owns new-user emails) |
| Role |
MAAP API (PUT /members/<user>, role_id) |
Guest / Member / Admin |
| Organizations |
MAAP API (organizations membership) |
search + multi-select |
| Hub Groups |
Keycloak admin API (group membership) |
the four JupyterHub groups; disabled while status = suspended |
Open questions
- Suspend behavior: should suspending a user clear their hub groups, or
just disable editing (current mockup keeps them but inert)? Keycloak groups
still grant hub login while assigned — suspension probably must revoke.
- Audit trail: we can add an audit log in the MAAP API (viewable in the Console) to record who approved whom.
- Role ↔ group coupling: should choosing role Admin auto-suggest the
JupyterHub MAAP Admin group (and vice versa), or stay fully independent?
Problem
Approving a new MAAP user is currently two discrete steps in two different
admin tools:
status(suspended → active) and role viathe Console Users admin (or WP admin).
JupyterHub MAAP User,Basic User,GPU User,Admin) in the Keycloak admin console so the usercan actually launch a workspace.
Missing either step leaves the user half-provisioned (active member with no hub
access, or hub roles on a suspended account). With CAS decommissioned and
member auto-create now happening on first Keycloak login, the Console is the
natural single control point.
Proposal
One "Review User" modal in the Console Users admin combining both systems:
POST /members/<user>/status)PUT /members/<user>,role_id)Open questions
just disable editing (current mockup keeps them but inert)? Keycloak groups
still grant hub login while assigned — suspension probably must revoke.
JupyterHub MAAP Admin group (and vice versa), or stay fully independent?