Mock of B3 — Director adds a teacher account

Sources: spec §3.3 B3, prd.md §5 Journey 3.

Invariants enforced in this screen: I-CrossRoleIdentity (§5.1) — a user who is also a parent at another daycare has exactly one User record and sees both contexts cleanly, never mixed; revoked teachers lose access within 24 hours (AC3).

Inference flags:

B3 — Director adds a teacher account

Form — add teacher

Send invite

System creates a TeacherAssignment with status invited, dispatches a magic-link invite (§3.3 step 1–2). Link is single-use on first activation.

Teacher receives — magic-link invite

Littlereach · SMS or email

[exact invite body copy — not specified in spec. One tap gets them into the app, per PRD J3 step 2]

One-tap: [magic link]

Cross-role identity path (§3.3 E1, I-CrossRoleIdentity)

If the teacher is already a User (e.g. because they are a parent at another daycare on Littlereach), the existing User record is reused. Roles are keyed on (user_id, daycare_id, role).

Role context picker (teacher's view after login)

Login lands on:

AC2: exactly one User, two (daycare, role) pairs, never mixed.

[exact picker copy and visual — not specified in spec]

Admin-side — manage teacher roster

TeacherClassroomsStatusActions
Ana Torres Toddler Room active Reassign Correct name Re-send invite Revoke
[pending teacher] Preschool Room invited Re-send invite Cancel invite

Re-send generates a fresh magic link; previous link is invalidated (§3.3 error case). Revoked teachers lose access within 24 hours; session terminates on next app open or session refresh, whichever comes first (§3.3 E3).

Acceptance bar