This was basically rewritten by tabbott, because the code is a lot cleaner after just rewriting the ZulipPasswordResetForm code to no longer copy the model of the original Django version. Fixes #4733.
The situation if, for instance, the user signed up via google auth, and now needs a password to get their API key.