expephalon-totp/otp.py
2020-05-23 15:27:29 +02:00

36 lines
No EOL
907 B
Python

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}