What to build
Deleting an account currently takes a single button click on an inline confirmation. This adds a password gate: after clicking "Delete all my data", the user must type their current password into the confirmation dialog before anything is deleted.
Behaviour:
- The delete-account endpoint becomes
POST /rest/user-sessions/delete-account with a JSON body carrying the password (replacing the current bodyless DELETE).
- The password is verified before any deletion work begins. On mismatch, the request fails, nothing is deleted, and the failed attempt is recorded against the existing login rate limit (3 failures within 3 minutes locks further attempts), reusing the same machinery as the login flow.
- On success, deletion proceeds and the rate-limit rows are wiped with the account as they are today.
- The frontend confirmation dialog gains a password field with a show/hide toggle and an inline error region: wrong password shows an error in place, clears the field, and keeps the dialog open; success signs the user out and clears local storage as it does today.
Acceptance criteria
Blocked by
What to build
Deleting an account currently takes a single button click on an inline confirmation. This adds a password gate: after clicking "Delete all my data", the user must type their current password into the confirmation dialog before anything is deleted.
Behaviour:
POST /rest/user-sessions/delete-accountwith a JSON body carrying the password (replacing the current bodyless DELETE).Acceptance criteria
Blocked by