Authentication
Authentication (RPL)
Section titled “Authentication (RPL)”Audience: domain, product
Status: specced
Owns: product + backend
Depends on: Orchestrator, Domain — User
Product intent
Section titled “Product intent”- Create account, verify account, forgot password, reset password.
- Verification uses OTP (4-digit max; not email magic links).
- Sign-in: password and Google (Gmail) in v1.
- Shared auth/JWT issuance lives in the Orchestrator; CAP validates via JWKS and provisions
cap_usersfromuser.created. - Register may include
intents[](e.g.cap,lms) so OL notifies the right platforms. - OTP email is sent via Orchestrator Notifications.
- Login payload stays thin (tokens +
User, includingmustChangePasswordafter staff invite provision). After login the client calls CAPGET /meandGET /onboarding/mineto choose screens. - Change password: Orchestrator
PATCH /auth/change-password. - Delete account: Orchestrator
POST /auth/delete-account({ password }or Google-only{ confirm: true }). Login is deactivated (User.status=deactivated); CAP consumesuser.deletedand anonymizes PII. Check CAPGET /me/deletion-eligibilityfirst (warns if last centresuper_admin). - Notification channel prefs: Orchestrator
GET/PUT /notifications/preferences(own user). Auth OTP / password-reset / provisioned-password emails still send even if email is off. - Centre-staff invite does not use self-register: CAP → OL gRPC
ProvisionAccount. Generated passwords never leave OL except in that mail.
See also
Section titled “See also”- Screens / flows → Experience flows — account & identity
- Orchestrator contract → Orchestrator API (
openapi/orchestrator.yaml) - CAP client groups → API overview — Auth
- Audience copy → Narrative — Account and sign-in