def post(self, *args, **kwargs): next = self.get_argument('next', '') account = self.get_argument('account', None) password = self.get_argument('password', '') rsa_encrypt = self.get_argument('rsa_encrypt', 0) if settings.login_pwd_rsa_encrypt and int( rsa_encrypt) == 1 and len(password) > 10: private_key = sys_config('sys_login_rsa_priv_key') password = RSAEncrypter.decrypt(password, private_key) if not account: return self.error('账号不能够为空') if Func.is_mobile(account): member = Member.Q.filter(Member.mobile == account).first() elif Func.is_email(account): member = Member.Q.filter(Member.email == account).first() else: member = Member.Q.filter(Member.username == account).first() if member is None: return self.error('用户名或者密码错误') if int(member.status) == 0: return self.error('用户被“禁用”,请联系客服') if check_password(password, member.password) is not True: return self.error('用户名或者密码错误') Member.login_success(member, self) self.clear_cookie(valid_code_key) return self.success(next=next)
def post(self, *args, **kwargs): id = self.get_argument('id', None) params = self.params() params['status'] = params.get('status', 0) if not id: return self.error('用户ID不能为空') username = params.get('username', None) if username: count = Member.Q.filter(Member.id != id).filter( Member.username == username).count() if count > 0: return self.error('用户名已被占用') mobile = params.get('mobile', None) params.pop('mobile', None) if mobile: params['mobile'] = mobile if Func.is_mobile(mobile): count = Member.Q.filter(Member.id != id).filter( Member.mobile == mobile).count() if count > 0: return self.error('电话号码已被占用') email = params.get('email', None) params.pop('email', None) if email: params['email'] = email if Func.is_email(email): count = Member.Q.filter(Member.id != id).filter( Member.email == email).count() if count > 0: return self.error('Email已被占用') password = params.get('password', None) params.pop('password', None) if password: rsa_encrypt = params.get('rsa_encrypt', 0) if settings.login_pwd_rsa_encrypt and int( rsa_encrypt) == 1 and len(password) > 10: private_key = sys_config('sys_login_rsa_priv_key') # print('password: '******'password'] = make_password(password) params.pop('_xsrf', None) params.pop('rsa_encrypt', None) Member.Q.filter(Member.id == id).update(params) Member.session.commit() # update member cache info member = Member.Q.filter(Member.id == id).first() cache_key = member.cache_info(self) return self.success(data=params)
def email_reset_pwd(self, email): """使用Email充值密码发送邮件功能 """ if not Func.is_email(email): return self.error('Email格式不正确') token = self.get_secure_cookie(settings.token_key) if token: return self.error('邮件已发送,30分钟后重试') member = Member.Q.filter(Member.email == email).first() if member is None: return self.error('账户没有注册') if member.status == 0: return self.error('账户被禁用') self.success() subject = '[%s]找回密码' % sys_config('site_name') token = Func.uuid32() action_url = sys_config( 'site_url') + '/passport/forget.html?token=' + token localnow = Func.local_now() + datetime.timedelta(minutes=30) params = { 'username': member.username, 'expires': str(localnow), 'action_url': action_url, 'action_tips': '立即重置密码', } tmpl = 'common/email_content.html' content = self.render_string(tmpl, **params) # print('content', content) Func.sendmail({ 'to_addr': email, 'subject': subject, 'content': content }) save = { 'token': token, 'account': email, 'username': member.username, 'action': 'email_reset_pwd', } expires = time.mktime(localnow.timetuple()) self.set_secure_cookie(settings.token_key, str(save), expires=expires) return
def activate_email(self, email): """激活邮箱发送邮件功能 """ if not Func.is_email(email): return self.error('Email格式不正确') user_id = self.current_user.get('id') member = Member.Q.filter(Member.id == user_id).first() if member.email_activated: return self.error('已经激活了,请不要重复操作') token = self.get_secure_cookie(settings.token_key) if token: return self.error('邮件已发送,10分钟后重试') self.success() subject = '[%s]激活邮件' % sys_config('site_name') token = Func.uuid32() action_url = sys_config( 'site_url') + '/member/activate.html?token=' + token localnow = Func.local_now() + datetime.timedelta(minutes=10) params = { 'username': member.username, 'expires': str(localnow), 'action_url': action_url, 'action_tips': '立即激活邮箱', } tmpl = 'common/email_content.html' content = self.render_string(tmpl, **params) # print('content', content) Func.sendmail({ 'to_addr': email, 'subject': subject, 'content': content }) save = { 'token': token, 'account': email, 'username': member.username, 'action': 'email_reset_pwd', } expires = time.mktime(localnow.timetuple()) self.set_secure_cookie(settings.token_key, str(save), expires=expires) return
def post(self, *args, **kwargs): params = self.params() params['status'] = params.get('status', 0) if not params.get('username', None): return self.error('用户名不能为空') if not params.get('password', None): return self.error('密码不能为空') count = Member.Q.filter(Member.username == params['username']).count() if count > 0: return self.error('用户名已被占用') if Func.is_mobile(params.get('mobile', '')): count = Member.Q.filter(Member.mobile == params['mobile']).count() if count > 0: return self.error('电话号码已被占用', data=params) if Func.is_email(params.get('email', '')): count = Member.Q.filter(Member.email == params['email']).count() if count > 0: return self.error('Email已被占用') password = params.get('password') rsa_encrypt = params.get('rsa_encrypt', 0) if settings.login_pwd_rsa_encrypt and int( rsa_encrypt) == 1 and len(password) > 10: private_key = sys_config('sys_login_rsa_priv_key') password = RSAEncrypter.decrypt(password, private_key) params['password'] = make_password(password) params.pop('_xsrf', None) params.pop('rsa_encrypt', None) params['uuid'] = Func.uuid32() member = Member(**params) Member.session.add(member) Member.session.commit() return self.success(data=member.as_dict())