18 in this portal · 2 invites pending
| Person | Role | Status | Actions |
|---|---|---|---|
ada@northwind.example You |
Portal admin | Active | |
grace@northwind.example |
Member | Active | |
linus@northwind.example |
Member | Invited |
They'll get an email to join this portal and set their own password.
Contract. The user list is portal-scoped: members come from the real
@fuzefront/security-client —
GET /v1/security/tenants/{tenantId}/members (the tenant is this portal's org;
the tenantId is resolved from the session, never accepted from the client). Roles
come from GET .../roles; change-role is PUT .../members/{userId}/roles.
Invite is the anticipated portal-scoped invitation route (FF-EPIC-11-S3 — not native to
the monolith today): POST /api/v1/portal/invitations (InvitationCreate →
201), scoped to the caller's own portal. Inviting into a portal you don't own is
refused 403 (states frame, g). You cannot change your own role (self-lockout guard).