When a user who has 2FA enabled, we should allow them to use any 2FA method they have set up, but we should offer WebAuthn first, TOTP second, and recovery codes third.
| WebAuthn only | TOTP only | WebAuthn + TOTP | Recovery code form |
- If the user only has WebAuthn, continue with WebAuthn by default, but display a button that leads to a form where they can input a recovery code
- If the user only has TOTP, display a form where they can enter a TOTP code, but display a button that leads to a form where they can input a recovery code
- If the user has both WebAuthn and TOTP, continue with WebAuthn by default, but display a button that leads to a TOTP form, and a button that leads to a recovery code form
- The recovery code form should have a button linking back to the WebAuthn flow or the TOTP flow (or both if both are available)



