예제 #1
0
파일: mails.py 프로젝트: yxteagle/account
class ResetPwd(object):

    VALIDITY_LAST = 600
    RESETPWD_KEY = 'RESETPWD_KEY'
    RESENDMAIL_LIMIT = 1
    RESENDMAIL_KEY = 'RESENDMAIL_KEY'

    def __init__(self, user_name):
        self.resetpwd_key = '%s_%s' % (self.RESETPWD_KEY, user_name)
        self.resendmail_key = '%s_%s' % (self.RESENDMAIL_KEY, user_name)
        self.user = DoUserModel(user_name)

    def _send_reset_email(self):
        code = get_random_code()
        send_mail(
            subject=u'yxt_account:密码重置',
            message=u'时间:%s\n验证码:%s\n有效期:%s s' % (
                get_datetime_now(), code, str(self.VALIDITY_LAST)),
            from_email=settings.EMAIL_HOST_USER,
            recipient_list=[self.user.get_user()['user_email']],
            fail_silently=True
            )
        cache.set(self.resendmail_key, 1, self.RESENDMAIL_LIMIT)
        cache.set(self.resetpwd_key, code, self.VALIDITY_LAST)

    def send_info(self):
        if not self.user.get_user():
            return False, 404
        if cache.get(self.resendmail_key):
            return False, 422
        threading.Thread(target=self._send_reset_email).start()
        return True, None

    def _check_code(self, code):
        cache_code = cache.get(self.resetpwd_key)
        return cache_code == code

    def reset_pwd(self, code, user_pwd_new):
        if not self.user.get_user():
            return False
        if not self._check_code(code):
            return False
        cache.delete(self.resetpwd_key)
        return self.user.reset_pwd(user_pwd_new)
예제 #2
0
파일: mails.py 프로젝트: yxteagle/account
 def __init__(self, user_name):
     self.resetpwd_key = '%s_%s' % (self.RESETPWD_KEY, user_name)
     self.resendmail_key = '%s_%s' % (self.RESENDMAIL_KEY, user_name)
     self.user = DoUserModel(user_name)