@ -52,8 +52,11 @@ def get_settings_account_recovery(request: Request) -> dict:
@view_config ( route_name = " settings_two_factor " , renderer = " settings_two_factor.jinja2 " )
@view_config ( route_name = " settings_two_factor " , renderer = " settings_two_factor.jinja2 " )
def get_settings_two_factor ( request : Request ) - > dict :
def get_settings_two_factor ( request : Request ) - > dict :
""" Generate the two-factor authentication page. """
""" Generate the two-factor authentication page. """
# pylint: disable=unused-argument
return { }
# Generate a new secret key if the user doesn't have one.
if request . user . two_factor_secret is None :
request . user . two_factor_secret = pyotp . random_base32 ( )
return { " two_factor_secret " : request . user . two_factor_secret }
@view_config (
@view_config (
@ -88,10 +91,6 @@ def get_settings_two_factor_qr_code(request: Request) -> Response:
if request . user . two_factor_enabled :
if request . user . two_factor_enabled :
raise HTTPForbidden ( " Already enabled " )
raise HTTPForbidden ( " Already enabled " )
# Generate a new secret key if the user doesn't have one.
if request . user . two_factor_secret is None :
request . user . two_factor_secret = pyotp . random_base32 ( )
totp = pyotp . totp . TOTP ( request . user . two_factor_secret )
totp = pyotp . totp . TOTP ( request . user . two_factor_secret )
otp_uri = totp . provisioning_uri ( request . user . username , issuer_name = " Tildes " )
otp_uri = totp . provisioning_uri ( request . user . username , issuer_name = " Tildes " )
byte_io = BytesIO ( )
byte_io = BytesIO ( )