Page MenuHomePhabricator

Allow users to recover from a missing password hasher
ClosedPublic

Authored by epriestley on Aug 21 2014, 4:50 PM.
Tags
None
Referenced Files
F14066600: D10325.diff
Tue, Nov 19, 10:44 AM
F14052982: D10325.diff
Fri, Nov 15, 11:52 AM
F14040762: D10325.diff
Mon, Nov 11, 1:10 PM
F14022741: D10325.diff
Wed, Nov 6, 7:07 PM
F14005283: D10325.id24864.diff
Sun, Oct 27, 10:41 AM
Unknown Object (File)
Oct 8 2024, 10:55 PM
Unknown Object (File)
Oct 8 2024, 6:32 AM
Unknown Object (File)
Oct 1 2024, 9:56 PM
Subscribers

Details

Summary

Fixes T5934. If you hash a password with, e.g., bcrypt, and then lose the bcrypt hasher for some reason, we currently fatal when trying to figure out if we can upgrade.

Instead, detect that the current hasher implementation has vanished and let the user reset their password (for account passwords) or choose a new one (for VCS passwords)>

Test Plan

Account password:

  • Artifically disabled bcrypt hasher.
  • Viewed password panel, saw warnings about missing hasher.
  • Used password reset workflow to change password, saw iterated MD5 hashed password get set.
  • Enabled bcrypt hasher again.
  • Saw upgrade warning.
  • Upgraded password to bcrypt.

VCS password:

  • Artificially disabled bcrypt hasher.
  • Viewed password panel, saw warnings about missing hasher.
  • Reset password.
  • Saw iterated md5 password.
  • Reenabled bcrypt.
  • Upgraded to bcrypt.

Diff Detail

Repository
rP Phabricator
Branch
passhash
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 2315
Build 2319: [Placeholder Plan] Wait for 30 Seconds

Event Timeline

epriestley retitled this revision from to Allow users to recover from a missing password hasher.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: btrahan.
btrahan edited edge metadata.
This revision is now accepted and ready to land.Aug 21 2014, 6:25 PM
epriestley updated this revision to Diff 24864.

Closed by commit rPd122d9ec86a8 (authored by @epriestley).