expephalon-chat/totp/otp.py

29 lines
699 B
Python
Raw 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 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}