Oups, j'ai perdu mon téléphone. Comment puis-je recevoir l'OTP maintenant ?

Aujourd’hui, je l’ai examiné à nouveau et j’ai constaté que :

[25] pry(main)> how.totp_enabled?
=> false
[26] pry(main)> how.backup_codes_enabled?
=> true
[27] pry(main)> how.totp_or_backup_codes_enabled?
=> true

J’ai donc essayé de supprimer également les codes de sauvegarde, en suivant la réponse ci-dessus de @falco :

UserSecondFactor.backup_codes.where(user_id: id).each(&:destroy!)

Voici maintenant la solution complète pour désactiver l’OTP pour un utilisateur qui a perdu ses moyens de récupération : vous devez supprimer à la fois les entrées totps et les backup_codes, afin que l’appel à #totp_or_backup_codes_enabled? retourne false.