File: //home/arjun/projects/buyercall_forms/buyercall/buyercall/lib/util_two_factor_auth.py
from flask import (session,
current_app as app)
from buyercall.blueprints.filters import format_phone_number
import random
def send_verification_code(user):
partner_id = None
to_number = format_phone_number(user.phonenumber)
partner = 'BuyerCall'
bw_number = app.config['BANDWIDTH_CALLER_ID']
if user.partnership:
if user.partnership.operational_number:
bw_number = user.partnership.operational_number
partner = user.partnership.name
partner_id = user.partnership.id
verification_code = generate_code()
# Check to see if partner allows both 2FA methods
# Check if user have partnership
if user.partnership:
#check if the user has partner account id
if user.partnership_account:
if user.partnership.is_2fa_sms_enabled and user.partnership_account.is_2fa_sms_enabled and user.is_2fa_sms:
# Send the verification code to the user
from buyercall.blueprints.sms.bw_sms_tasks import app_send_sms
verification_msg_body = partner + ' verification code: ' + verification_code
app_send_sms.delay(to_number, bw_number, verification_msg_body)
if user.partnership.is_2fa_email_enabled and user.partnership_account.is_2fa_email_enabled and user.is_2fa_email:
from buyercall.blueprints.user.tasks import send_2fa_email_verification
send_2fa_email_verification.delay(user.email, user.firstname, verification_code, user.partnership.id)
session['verification_code'] = verification_code
else:
if user.partnership.is_2fa_sms_enabled and user.is_2fa_sms:
# Send the verification code to the user
from buyercall.blueprints.sms.bw_sms_tasks import app_send_sms
verification_msg_body = partner + ' verification code: ' + verification_code
app_send_sms.delay(to_number, bw_number, verification_msg_body)
if user.partnership.is_2fa_email_enabled and user.is_2fa_email:
from buyercall.blueprints.user.tasks import send_2fa_email_verification
send_2fa_email_verification.delay(user.email, user.firstname, verification_code, user.partnership.id)
session['verification_code'] = verification_code
else:
if user.is_2fa_sms:
# Send the verification code to the user
from buyercall.blueprints.sms.bw_sms_tasks import app_send_sms
verification_msg_body = partner + ' verification code: ' + verification_code
app_send_sms.delay(to_number, bw_number, verification_msg_body)
if user.is_2fa_email:
from buyercall.blueprints.user.tasks import send_2fa_email_verification
send_2fa_email_verification.delay(user.email, user.firstname, verification_code)
session['verification_code'] = verification_code
return verification_code
def generate_code():
return str(random.randrange(100000, 999999))