From fda5118c39029d27c369e4fc762b6736e3d7e1fb Mon Sep 17 00:00:00 2001 From: William Colmenares Date: Sun, 12 May 2019 21:34:54 -0400 Subject: [PATCH] Added otp verification --- datacenterlight/utils.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/datacenterlight/utils.py b/datacenterlight/utils.py index bbcb16ab..808a7643 100644 --- a/datacenterlight/utils.py +++ b/datacenterlight/utils.py @@ -1,4 +1,8 @@ import logging +import os +import pyotp +import requests +import dotenv from django.contrib.sites.models import Site from datacenterlight.tasks import create_vm_task @@ -11,6 +15,17 @@ from .models import VMPricing, VMTemplate logger = logging.getLogger(__name__) +PROJECT_DIR = os.path.abspath( + os.path.join(os.path.dirname(__file__)), +) + +# load .env file +dotenv.read_dotenv("{0}/.env".format(PROJECT_DIR)) + + +def env(env_name): + return os.environ.get(env_name) + def get_cms_integration(name): current_site = Site.objects.get_current() @@ -100,3 +115,22 @@ def clear_all_session_vars(request): 'generic_payment_details', 'product_id']: if session_var in request.session: del request.session[session_var] + + +def check_otp(name, realm, token): + data = { + "auth_name": env('AUTH_NAME'), + "auth_token": pyotp.TOTP(env('AUTH_SEED')).now(), + "auth_realm": env('AUTH_REALM'), + "name": name, + "realm": realm, + "token": token + } + response = requests.post( + "https://{OTP_SERVER}{OTP_VERIFY_ENDPOINT}".format( + OTP_SERVER=env('OTP_SERVER'), + OTP_VERIFY_ENDPOINT=env('OTP_VERIFY_ENDPOINT') + ), + data=data + ) + return response.status_code