Support TOTP with database storage (temporarily).

A dedicated database model is used to store the secrets. If user does
not have a secret, it is assumed that he disabled OTP.