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}