HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
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))