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