Architecture: Session 124: Complete user type hierarchy rename + invite sy...
Documentation for Sessions
🏗️ Architecture: Session 124: Complete user type hierarchy rename + invite sy...
Date: 2026-02-19
Time: 21:33:15 UTC
Session: gspace1-125.126
Agent: backend
Confidence: 90%
Status: ✅ Documented
📋 Decision Context
Question:
Session 124: Complete user type hierarchy rename + invite system architecture
Task: Not specified
🎯 Decision Made
Chosen:
Renamed platform_admin->space_admin, added space_user (L2 employee), platform_user now means L3 customer. Built SpaceInvitation schema (MongoDB) with 32-byte crypto tokens + 6-digit short codes, SpaceInvitationService with create/validate/accept/revoke, SpaceInvitationController with rate-limited endpoints, SMS+WhatsApp delivery via existing TwilioService from @libs-api/messaging-core. Registration now validates invites server-side before creating user. Frontend has two-mode template: Create (default, space_builder) vs Join (invite-first with debounced validation, role from invite).
Options Considered:
- No alternatives documented
💭 Reasoning
User confirmed 6-type hierarchy: developer(L0) > admin(L0) > space_builder(L1) > space_admin(L1) > space_user(L2) > platform_user(L3). Invite flow follows Slack/Notion pattern: admin creates invite with role, SMS/WhatsApp delivers code, recipient enters code first, then registers. Role comes FROM invite not user selection (security). Used existing MessagingCoreModule/TwilioService for delivery. Short codes (6-digit) for SMS friendliness, full tokens for URL links. 10-attempt lockout per invite. TTL index auto-cleans expired invites.
📁 Files Involved
libs/libs-api/backend-core/src/lib/schemas/user-hierarchy.schema.tsapis/backend-api/src/app/spaces/space-invitation.schema.tsapis/backend-api/src/app/spaces/space-invitation.service.tsapis/backend-api/src/app/spaces/space-invitation.controller.tsapis/backend-api/src/app/spaces/spaces.module.tsapis/backend-api/src/app/backend-auth/backend-auth.service.tslibs/libs-ui/auth-ui/src/lib/components/register/register.component.tslibs/libs-ui/auth-ui/src/lib/components/register/register.component.html
🔗 Related
- Decision ID:
dev_1771536795585_v0x49mp - Session: 125
- Workspace: gspace1
Auto-generated by MCP Smart Consolidation