import pyotp from .models import * from . import TrustedDevice, U2F, FIDO2, totp import simplejson from django.shortcuts import HttpResponse from mfa.views import verify,goto from mfa.recovery import delTokens def has_mfa(request,username): uk = User_Keys.objects.filter(username=username,enabled=1) if uk.count()==1: for u in uk: if u.key_type == "RECOVERY": delTokens(request) elif uk.count()>0: return verify(request, username) return False def is_mfa(request,ignore_methods=[]): if request.session.get("mfa",{}).get("verified",False): if not request.session.get("mfa",{}).get("method",None) in ignore_methods: return True return False def recheck(request): method=request.session.get("mfa",{}).get("method",None) if not method: return HttpResponse(simplejson.dumps({"res":False}),content_type="application/json") if method=="Trusted Device": return HttpResponse(simplejson.dumps({"res":TrustedDevice.verify(request)}),content_type="application/json") elif method=="U2F": return HttpResponse(simplejson.dumps({"html": U2F.recheck(request).content}), content_type="application/json") elif method == "FIDO2": return HttpResponse(simplejson.dumps({"html": FIDO2.recheck(request).content}), content_type="application/json") elif method=="TOTP": return HttpResponse(simplejson.dumps({"html": totp.recheck(request).content}), content_type="application/json")