Commit graph

21 commits

Author SHA1 Message Date
5922dc704b docs: PR body for feature/staff-role-switcher
Add docs/PR-staff-role-switcher.md covering role interface, TOTP/enroll,
and links to ENROLL, TOTP, and PKI READY packs (PROD-CA cutover, AuthZ
enroll design, CRL/OCSP deploy). Link from README Docs table.
2026-10-14 04:34:25 -04:00
7e8fc7c1f9 docs: PKI READY packages — prod CA cutover, AuthZ enroll, CRL/OCSP deploy
Convert OPEN-ISSUES #4 external items to READY ops packages without
shipping production mint. LAB_CA_ENABLE stays default off; NODE_ENV=
production still refuses lab; default POST /enroll/csr remains 501.

- docs/PROD-CA-CUTOVER-RUNBOOK.md (mint/renew/revoke cutover)
- docs/AUTHZ-ENROLL-DESIGN.md (gates before dropping 501)
- docs/CRL-OCSP-DEPLOY-CHECKLIST.md (proxy/CA revoke deploy)
- Cross-links from README, ENROLL, PKI-MINT-BACKLOG, refuse/design docs

npm test: 19/19 PASS
2026-10-14 04:20:24 -04:00
10307334c5 feat: restore mustChangePassword first-login gate (pki software-complete)
Invite accounts default mustChangePassword=true; POST /password/change
clears the flag and offers optional TOTP; GET /check returns 403
must_change_password until change. Admin POST /admin/mark-must-change
re-marks owner invites. Also POST /2fa/skip. Fixes password-totp tests
(port 18039). All 19 npm tests green including health PKI/lab matrix.
2026-10-14 01:59:03 -04:00
64da073787 docs: PRODUCTION-PKI-REFUSE matrix 501 vs lab 201
Operator-facing refuse matrix for enroll/csr paths.
2026-10-14 01:30:52 -04:00
a973431935 docs: CRL-OCSP-DESIGN + lab-test-ca crl subcommand
Future real-CA revocation design; lab empty CRL generator only.
2026-10-14 01:16:53 -04:00
ca117eb458 feat: LAB_CA_ENABLE opt-in lab mint via lab-test-ca.sh (prod refused)
POST /enroll/csr returns 201 + X-Lab-CA when lab-pki ready; default 501.
2026-10-14 01:08:21 -04:00
7a211356a7 feat: lab-test-ca.sh openssl lab CA (not wired to enroll)
LAB ONLY self-signed root + sign CSR; POST /enroll/csr still 501.
2026-10-14 01:00:38 -04:00
566b29f4ac feat: GET /roles/catalog and /users/:id/roles for starter/ender/admin
Public catalog for dual-staff SoT when edge STAFF_IAM_URL is set.
2026-10-14 00:55:27 -04:00
5e2d0b979a feat: TODO-7 A4 — CSR PEM shape validation before 501
Invalid PEM armor → 400; valid-looking still 501 not_implemented; audit without PEM body.
2026-10-13 23:38:37 -04:00
f8d0a1249f feat: enroll status csrSchemaUrl always; TEST-CA-DESIGN doc
TODO-6 L4/I4 — PKI next-level scaffold without fake mint.
2026-10-13 23:23:48 -04:00
ae820a5db6 feat: GET /enroll/csr/schema field map (mint still 501)
Schema-only CSR contract for future live PKI; no fake crypto.
2026-10-13 23:08:58 -04:00
128ad01ff9 feat: POST /enroll/csr returns 501 scaffold (no fake PKI mint)
Honest not_implemented CSR path with nextSteps; backlog updated.
2026-10-13 22:25:53 -04:00
533c30bd35 docs: PKI-MINT-BACKLOG for live device-cert not shipped 2026-10-13 21:58:50 -04:00
f8067cbca9 docs: ENROLL.md refresh and TOTP.md for staff 2FA and device-cert status
Document STAFF_TOTP_REQUIRED and enroll/status fields for operators.
2026-10-13 21:46:31 -04:00
d026f7eeb4 feat: enroll panel proxyHeadersSeen chips on login/app 2026-10-13 21:18:29 -04:00
9ce87e8a20 feat: 2026 brand staff IAM — TOTP gate, enroll/status, UI kit
- STAFF_TOTP_REQUIRED enroll path and TOTP helpers
- enroll/status nextSteps, proxyHeadersSeen, ENROLL.md
- Brand kit on login/app public pages
2026-10-13 21:11:59 -04:00
George Lambert
7805b3045b feat: Security tab hooks for TOTP and mTLS cert minting
Add Account Security UI with password change, authenticator enrollment,
and a reserved client-certificate mint slot (window.StaffIamSecurity.onCertMount)
so the parallel mTLS login work can wire without clobbering force-change/TOTP.

JSON APIs (/check etc.) return 403 must_change_password rather than HTML 302
so department doors can redirect cleanly.
2026-10-05 15:42:05 -04:00
George Lambert
0078a64b07 feat: force first-login password change + optional TOTP
New staff accounts default to mustChangePassword=true. After login,
/check and staff doors return 403 must_change_password until
POST /password/change succeeds; then /enroll-2fa offers optional
authenticator setup (skip allowed). Login requires totpCode when
enabled. Admin POST /admin/mark-must-change re-marks invite owners.
2026-10-05 15:39:34 -04:00
b8670c8e18 feat: staff role interface switcher and session currentRole
- IAM sessions carry capabilities[] + currentRole; POST /session/role switches
- ROLE_INTERFACES map roles to CS/Sales/Acct/Admin/Fleet door URLs
- CORS for *.zapier.georgelambert.org so staff UIs can call IAM
- Top-right Interface dropdown when user has >=2 capabilities
- Admin People & roles UI already assigns roles; clarified framing
- Shared switcher in verae-staff-ui; fallbacks in CS/Sales/Acct/staff plane
2026-10-05 15:27:37 -04:00
a341a1e187 docs: bring README.md in line with Standard Readme 2026-09-22 09:58:35 -04:00
84fd73fe95 Initial import of verae-staff-iam from zapier monorepo 2026-09-11 19:55:17 -04:00