Passport York account recovery
Journey map
Shared screen
Recovery email missing
Happy path
Decision point
Completed / signed in
External action
Expected next step
Cancel, retry, or shortcut
Drag to pan, scroll or pinch to zoom, or use the +/− controls in the corner. Press 0 to reset the view.
flowchart LR
Login["Sign in to\nPassport York"]
KnowsPw{"Sign-in succeeds?"}
SignedIn(["Signed in"])
ResetReq["Reset Password"]
HasRecovery{"Recovery email\non file?"}
NoRecovery["Password Reset\nUnavailable"]
UpdateIntro["Update Recovery\nEmail"]
HasRecoveryAlready{"Recovery email\nalready set?"}
UpdateForm["Set Recovery\nEmail"]
UpdateCurrent["Update Recovery\nEmail (Current)"]
VerifyRecovery["Verify New\nRecovery Email"]
UpdateDone["Recovery Email\nUpdated"]
ITSupport((("Contact IT\nSupport")))
Sent["Enter Your\nOne-Time Code"]
NewPassword["Choose New\nPassword"]
Success(["Password Reset\nComplete"])
Expired["Reset Code\nExpired"]
Login -->|"Enters credentials"| KnowsPw
KnowsPw -->|"Yes"| SignedIn
KnowsPw -->|"No / forgot password"| ResetReq
Login -.->|"Update recovery email"| UpdateIntro
ResetReq -->|"Submits identity details"| HasRecovery
ResetReq -.->|"Back to sign in"| Login
ResetReq -.->|"Update recovery email"| UpdateIntro
HasRecovery -->|"No"| NoRecovery
HasRecovery -->|"Yes"| Sent
NoRecovery -->|"Update recovery email"| UpdateIntro
NoRecovery -.->|"Cancel"| Login
NoRecovery -.->|"Contact IT Support"| ITSupport
UpdateIntro -->|"Logs in to verify identity"| HasRecoveryAlready
UpdateIntro -.->|"Cancel"| Login
HasRecoveryAlready -->|"No"| UpdateForm
HasRecoveryAlready -->|"Yes"| UpdateCurrent
UpdateForm -->|"Updates email"| VerifyRecovery
UpdateForm -.->|"Continue without changes"| ResetReq
UpdateCurrent -->|"Updates email"| VerifyRecovery
UpdateCurrent -.->|"Continue, keep current"| Login
VerifyRecovery -->|"Enters correct code"| UpdateDone
VerifyRecovery -.->|"Resends code"| VerifyRecovery
UpdateDone -->|"Continue to password reset"| ResetReq
UpdateDone -.->|"Return to sign in"| Login
Sent -->|"Enters correct code"| NewPassword
Sent -.->|"Resends code"| Sent
Sent -.->|"Preview expired-code state"| Expired
NewPassword -->|"Passwords match"| Success
NewPassword -.->|"Don't match: inline error"| NewPassword
NewPassword -.->|"Cancels"| Login
Expired -.->|"Requests a new code"| ResetReq
Expired -.->|"Back to sign in"| Login
Success -->|"Signs in with new password"| Login
classDef decision fill:#fff7e8,stroke:#e8c58e,color:#70400b,font-weight:700,stroke-width:1.5px;
classDef external fill:#f5f7f9,stroke:#8b98a3,color:#44505c,stroke-dasharray:4 3;
classDef terminal fill:#edf8f2,stroke:#a8d7c0,color:#115338,font-weight:700,stroke-width:1.5px;
classDef core fill:#ffffff,stroke:#34414d,color:#111827,stroke-width:1.5px;
classDef noRecoveryScreen fill:#fdf6f2,stroke:#d98a5f,color:#7a3a13;
classDef happyScreen fill:#f2f7fd,stroke:#5f8fd9,color:#123a7a;
class KnowsPw,HasRecovery,HasRecoveryAlready decision;
class ITSupport external;
class SignedIn,Success terminal;
class Login,ResetReq,VerifyRecovery core;
class NoRecovery,UpdateIntro,UpdateForm,UpdateDone noRecoveryScreen;
class Sent,NewPassword,Expired,UpdateCurrent happyScreen;
click Login "login.html" _self
click ResetReq "password-reset.html?flow=happy" _self
click NoRecovery "password-reset-no-recovery.html?flow=no-recovery" _self
click UpdateIntro "update-recovery-email-1.html?flow=no-recovery" _self
click UpdateForm "update-recovery-email-2.html?flow=no-recovery" _self
click UpdateCurrent "update-recovery-email-current.html?flow=happy" _self
click VerifyRecovery "verify-recovery-email.html?flow=happy" _self
click UpdateDone "recovery-email-updated.html?flow=no-recovery" _self
click Sent "password-reset-sent.html?flow=happy" _self
click NewPassword "new-password.html?flow=happy" _self
click Success "password-reset-success.html?flow=happy" _self
click Expired "password-reset-error.html?flow=happy" _self
click SignedIn "signed-in.html" _self
click ITSupport "mailto:askit@yorku.ca" _self
Diagram not loading, or need a keyboard/screen-reader-friendly option? Use the direct links below.
Open any screen
Prototype note: the dark strip at the top of individual screens is navigation for review only and is not part of the proposed production Passport York UI.