Platform & Access · Change own password

Authenticated self-service password change requiring the current password plus a new one and its confirmation.

AreaPlatform & Access
Routesconfiguration.password · configuration.password.index
Centre modulesalways available
Staff levelsany authenticated staff level
Modelsstaff-member
UI labelmenu.navbar.configuration.password
Coverage2 use cases · 1 happy · 3 failure

How it works

Extends the generic routes/form.js save pipeline, so model validation runs before save() and the route redirects to returnRoute on success. It overrides the super call with a .catch() so an API rejection keeps the user on the form instead of transitioning away. The menu entry excludes content_creator, calibrator and external, so those levels have no self-service password change from the menu.

Use cases

Why someone opens this (2)

  • Routine credential rotation.
  • A user who suspects their password was shared changing it immediately.

Path map

flowchart LR
    F(["Change own password"]):::feat
    F --> H1["Password rotated"]:::ok
    F -.-> X1["Current password missing or wrong"]:::bad
    F -.-> X2["New password too weak"]:::bad
    F -.-> X3["Confirmation mismatch"]:::bad
    classDef feat fill:#4a5c8a,stroke:#4a5c8a,color:#ffffff,font-weight:bold
    classDef ok fill:#e3f1ea,stroke:#0d6b42,color:#0d4a2e
    classDef bad fill:#f7e6e2,stroke:#9a2d1c,color:#6e1f13

Happy paths

Password rotated

  1. User opens Configuration → Change password.
  2. Enters current password, new password and confirmation.
  3. Model validations pass (passOld present, pass matches the format rule, passConfirmation matches pass).
  4. informative-message.change-password.success.message is shown and the user is returned to the previous route.

Failure paths

QA checklist

Tick these off while regression-testing this feature. The boxes are plain Markdown, so progress is visible in git diffs.

  • ✅ Password rotated
  • ⛔ Current password missing or wrong
  • ⛔ New password too weak
  • ⛔ Confirmation mismatch

Implementation


Generated from doc/feature-inventory.json · id platform-change-own-password · commit 276788ca6