Make known email providers a new setting instead of hardcoding it
Refactor the user registration process

Move all code to a different class. Apply DRY, and remove duplicated
code. Reworked all steps.
Security fix: validate token when setting first password

Verification token wasn't being validated before setting first password
for an account. Now it is.