def save(self, **kwargs):
if not self.id:
now = pytz.utc.localize(datetime.utcnow())
expires = now + timedelta(days=1)
self.expires = expires
self.code = str(random.randint(1000, 9999))
up = UserProfile.objects.get(user=self.user)
if self.mode == "SMS" and \
up.mobile_phone_number and \
settings.SEND_SMS:
# Send SMS to up.mobile_phone_number
sns = boto3.client(
'sns',
aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
region_name='us-east-1')
number = "+1%s" % (up.mobile_phone_number)
sns.publish(
PhoneNumber=number,
Message="Your code is : %s" % (self.code),
MessageAttributes={
'AWS.SNS.SMS.SenderID': {
'DataType': 'String',
'StringValue': 'MySenderID'
}
}
)
elif self.mode == "SMS" and not up.mobile_phone_number:
logger.info("Cannot send SMS. No phone number on file.")
elif self.mode == "EMAIL" and self.user.email:
# "Send SMS to self.user.email
mfa_via_email(self.user, self.code)
elif self.mode == "EMAIL" and not self.user.email:
logger.info("Cannot send email. No email_on_file.")
else:
# No MFA code sent
pass
super(MFACode, self).save(**kwargs)
评论列表
文章目录