|
|
@@ -1,10 +1,13 @@ |
|
|
import web |
|
|
import web |
|
|
|
|
|
import io |
|
|
|
|
|
import base64 |
|
|
from views.forms import register_form |
|
|
from views.forms import register_form |
|
|
from views.utils import (get_nav_bar, csrf_protected, password_weakness, get_render, |
|
|
from views.utils import (get_nav_bar, csrf_protected, password_weakness, get_render, |
|
|
sendmail, hash_password, generate_authenticator_secret) |
|
|
sendmail, hash_password, generate_authenticator_secret) |
|
|
from uuid import uuid4 |
|
|
from uuid import uuid4 |
|
|
import models.register |
|
|
import models.register |
|
|
import models.user |
|
|
import models.user |
|
|
|
|
|
import qrcode |
|
|
import logging |
|
|
import logging |
|
|
import re |
|
|
import re |
|
|
|
|
|
|
|
|
@@ -100,8 +103,18 @@ class Verify: |
|
|
|
|
|
|
|
|
if token and userid is not None: |
|
|
if token and userid is not None: |
|
|
models.user.verify_user(userid) |
|
|
models.user.verify_user(userid) |
|
|
|
|
|
models.user.set_token(userid, "") |
|
|
|
|
|
username = models.user.get_user_name_by_id(userid) |
|
|
secret = generate_authenticator_secret() |
|
|
secret = generate_authenticator_secret() |
|
|
|
|
|
|
|
|
|
|
|
# Generate a base64 QR image |
|
|
|
|
|
qr_url = "otpauth://totp/beelance.com:{}?secret={}&issuer=beelance.com".format(username, secret) |
|
|
|
|
|
qr_img = qrcode.make(qr_url) |
|
|
|
|
|
with io.BytesIO() as stream: |
|
|
|
|
|
qr_img.save(stream) |
|
|
|
|
|
img = base64.b64encode(stream.getvalue()).decode('UTF-8') |
|
|
|
|
|
|
|
|
models.user.set_authenticator_secret(userid, secret) |
|
|
models.user.set_authenticator_secret(userid, secret) |
|
|
return render.verify(nav, True, secret, "Your email has been verified.") |
|
|
|
|
|
|
|
|
return render.verify(nav, True, secret, img, "Your email has been verified.") |
|
|
else: |
|
|
else: |
|
|
return render.verify(nav, True, secret, "Invalid token. Please try again.") |
|
|
|
|
|
|
|
|
return render.verify(nav, False, "", "", "Invalid token. Please try again.") |