fix Email otp method queue email sending
This commit is contained in:
parent
aa45ffcac6
commit
6f4e39fd46
2 changed files with 18 additions and 17 deletions
|
|
@ -140,7 +140,7 @@ class LoginManager:
|
|||
if self.verification_method == 'SMS':
|
||||
user_phone = frappe.db.get_value('User', self.user, ['phone','mobile_no'], as_dict=1)
|
||||
usr_phone = user_phone.mobile_no or user_phone.phone
|
||||
status = self.send_token_via_sms(token=token, phone_no=usr_phone, otpsecret=self.otp_secret)
|
||||
status = self.send_token_via_sms(token=self.token, phone_no=usr_phone, otpsecret=self.otp_secret)
|
||||
verification_obj = {'token_delivery': status,
|
||||
'prompt': status and 'Enter verification code sent to {}'.format(usr_phone[:4] + '******' + usr_phone[-3:]),
|
||||
'method': 'SMS'}
|
||||
|
|
@ -157,7 +157,7 @@ class LoginManager:
|
|||
'qrcode': get_qr_svg_code(totp_uri),
|
||||
'setup': otp_setup_completed }
|
||||
elif self.verification_method == 'Email':
|
||||
status = self.send_token_via_email(token=token,otpsecret=self.otp_secret)
|
||||
status = self.send_token_via_email(token=self.token, otpsecret=self.otp_secret)
|
||||
verification_obj = {'token_delivery': status,
|
||||
'prompt': status and 'Enter verification code sent to your registered email address',
|
||||
'method': 'Email'}
|
||||
|
|
@ -165,7 +165,7 @@ class LoginManager:
|
|||
|
||||
def process_2fa(self):
|
||||
if self.two_factor_auth_user():
|
||||
token = int(pyotp.TOTP(self.otp_secret).now())
|
||||
self.token = int(pyotp.TOTP(self.otp_secret).now())
|
||||
verification_obj = self.get_verification_obj()
|
||||
|
||||
tmp_id = frappe.generate_hash(length=8)
|
||||
|
|
@ -175,7 +175,7 @@ class LoginManager:
|
|||
# set increased expiry time for SMS and Email
|
||||
if self.verification_method in ['SMS', 'Email']:
|
||||
expiry_time = 300
|
||||
frappe.cache().set(tmp_id + '_token', token)
|
||||
frappe.cache().set(tmp_id + '_token', self.token)
|
||||
frappe.cache().expire(tmp_id + '_token', expiry_time)
|
||||
else:
|
||||
expiry_time = 180
|
||||
|
|
@ -212,7 +212,7 @@ class LoginManager:
|
|||
self.post_login()
|
||||
else:
|
||||
self.authenticate()
|
||||
if frappe.db.get_value('System Settings', 'System Settings', 'enable_two_factor_auth') == unicode(1):
|
||||
if (self.user != 'Administrator') and (frappe.db.get_value('System Settings', 'System Settings', 'enable_two_factor_auth') == unicode(1)):
|
||||
self.process_2fa()
|
||||
else:
|
||||
self.post_login(no_two_auth=True)
|
||||
|
|
@ -417,21 +417,22 @@ class LoginManager:
|
|||
|
||||
args[ss.receiver_parameter] = phone_no
|
||||
|
||||
status = send_request(ss.sms_gateway_url, args)
|
||||
|
||||
if 200 <= status < 300:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
sms_args = {'gateway_url':ss.sms_gateway_url,'params':args}
|
||||
enqueue(method=send_request, queue='short', timeout=300, event=None, async=True, job_name=None, now=False, **sms_args)
|
||||
return True
|
||||
|
||||
def send_token_via_email(self, token, otpsecret):
|
||||
from frappe.utils.background_jobs import enqueue
|
||||
user_email = frappe.db.get_value('User', self.user, 'email')
|
||||
if not user_email:
|
||||
return False
|
||||
hotp = pyotp.HOTP(otpsecret)
|
||||
frappe.sendmail(recipients=user_email, sender=None, subject='Verification Code',
|
||||
message='<p>Your verification code is {}</p>'.format(hotp.at(int(token))),
|
||||
delayed=False, retry=3)
|
||||
email_args = {
|
||||
'recipients':user_email, 'sender':None, 'subject':'Verification Code',
|
||||
'message':'<p>Your verification code is {}</p>'.format(hotp.at(int(token))),
|
||||
'delayed':False, 'retry':3 }
|
||||
|
||||
enqueue(method=frappe.sendmail, queue='short', timeout=300, event=None, async=True, job_name=None, now=False, **email_args)
|
||||
return True
|
||||
|
||||
class CookieManager:
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ login.login_handlers = (function() {
|
|||
} else if (data.verification.method == 'SMS'){
|
||||
continue_sms(data.verification.setup, data.verification.prompt);
|
||||
} else if (data.verification.method == 'Email'){
|
||||
continue_sms(data.verification.setup, data.verification.prompt);
|
||||
continue_email(data.verification.setup, data.verification.prompt);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
@ -288,7 +288,7 @@ var continue_sms = function(setup, prompt){
|
|||
request_otp();
|
||||
var sms_div = $('<div>').attr({'id':'sms_div','style':'padding-bottom:15px;text-align:center;'});
|
||||
|
||||
if (!setup){
|
||||
if (setup){
|
||||
direction = $('<div>').attr('id','sms_info').text('Enter phone number to send verification code');
|
||||
sms_div.append(direction);
|
||||
sms_div.append($('<div>').attr({'id':'sms_code_div'}).html(
|
||||
|
|
@ -328,7 +328,7 @@ var continue_email = function(setup, prompt){
|
|||
request_otp();
|
||||
var email_div = $('<div>').attr({'id':'email_div','style':'padding-bottom:15px;text-align:center;'});
|
||||
|
||||
if (!setup){
|
||||
if (setup){
|
||||
email_div.append('<p>Verification code email will be sent to registered email address. Enter code received below</p>')
|
||||
$('#otp_div').prepend(email_div);
|
||||
frappe.call({
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue