expephalon-demomodule/smsotp/otp.py
Kumi 7708128255 Finally got all the OTP stuff working
Finalized dbsettings views
Easter egg for missing backend pages
2020-04-15 22:19:03 +02:00

40 lines
1.2 KiB
Python

from core.classes.otp import BaseOTPProvider
from smsotp.models import OTPToken
from core.modules.sms import get_default_sms_provider
from dbsettings.functions import getValue
from django.utils import timezone
class SMSOTP(BaseOTPProvider):
@property
def get_name(self):
return "SMS OTP"
def create_token(self, user):
token = OTPToken.objects.create(user=user)
try:
token.send_sms()
return True
except:
return False
@property
def is_active(self):
return bool(get_default_sms_provider())
def start_authentication(self, user):
if self.create_token(user):
return "We have sent you an SMS containing your authentication token."
else:
return "An error has occurred, please try again later or contact the administrator."
def validate_token(self, user, token):
try:
max_age = timezone.now() - timezone.timedelta(seconds=int(getValue("smsotp.max_age", "300")))
OTPToken.objects.get(user=user, token=token, creation__gte=max_age).delete()
return True
except OTPToken.DoesNotExist:
return False
OTPPROVIDERS = {"smsotp": SMSOTP}