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 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 OTPUser.DoesNotExist: return False OTPPROVIDERS = {"totp": TOTP}