my bad it's all about verification result, the code works well now :
models/db.py
*pyotp verify*
auth.settings.auth_two_factor_enabled = True

def _set_two_factor(user, auth_two_factor):
    return None

def verify_otp(user, otp):
    import pyotp

    #pyotp.random_base32() # generate random number

    totp = pyotp.TOTP('4DKTQHH2V2F7T2ZO')
    if totp.verify(otp):
        return otp

auth.settings.two_factor_methods = [_set_two_factor]
auth.settings.two_factor_onvalidation = [verify_otp]

*google authenticator verify using pyotp*
auth.settings.auth_two_factor_enabled = True

def _set_two_factor(user, auth_two_factor):
    return None

def verify_otp(user, otp):
    import pyotp

    #pyotp.random_base32() # generate random number

    totp = pyotp.TOTP('4DKTQHH2V2F7T2ZO')

    data = totp.provisioning_uri("test")
    if data:
        return otp

def verify_comment():
    import pyotp
    import qrcode
    import StringIO

    totp = pyotp.TOTP('4DKTQHH2V2F7T2ZO')

    qr = qrcode.QRCode(
        version = 1, # 1 - 40
        error_correction = qrcode.constants.ERROR_CORRECT_H, 
        # ERROR_CORRECT_L (<= 7%), ERROR_CORRECT_M (<= 15%), 
ERROR_CORRECT_Q (<= 25%), ERROR_CORRECT_H (<= 30%)
        box_size = 2,
        border = 1, # default 4
    )

    data = totp.provisioning_uri("test")

    qr.add_data(data)
    qr.make(fit = True)

    # use an in-memory object to save
    output = StringIO.StringIO()
    img = qr.make_image()
    img.save(output)

    # and the use getvalue() method to get the string
    img_qrcode = '<img src = "data:image/png;base64, %s">' % 
output.getvalue().encode('base64').replace('\n', '')
    
    return DIV(XML(img_qrcode) )

auth.messages.two_factor_comment = verify_comment()
auth.settings.two_factor_methods = [_set_two_factor]
auth.settings.two_factor_onvalidation = [verify_otp]

best regards,
stifan

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to