expephalon-totp/otp.py

36 lines
907 B
Python
Raw Permalink Normal View History

from core.classes.otp import BaseOTPProvider
from totp.models import TOTPUser
from dbsettings.functions import getValue
from django.utils import timezone
import pyotp
class TOTP(BaseOTPProvider):
@property
def get_name(self):
return "Time-based OTP"
@property
def is_active(self):
return True
def active_for_user(self, user):
try:
TOTPUser.objects.get(user=user)
return super().active_for_user(user)
except TOTPUser.DoesNotExist:
return False
def start_authentication(self, user):
return "Please enter the token displayed in your app."
def validate_token(self, user, token):
try:
otpuser = TOTPUser.objects.get(user=user)
return pyotp.TOTP(otpuser.secret).verify(token)
except TOTPUser.DoesNotExist:
return False
OTPPROVIDERS = {"totp": TOTP}