York UniversityPassportYORK
Passport York · Journey overview

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.