def change_password(): ''' 修改密码函数 :return: 无 ''' flag = True while flag: customer = shopping.get_crurrent_customer() if not customer: input('您还没有登录,不能修改密码,请先登录,按任意键继续') flag = False continue # 获取用户输入的旧密码 # old_password = input('原密码(输入r返回上级菜单): ').strip() # old_password = mylib.validate_input('\d', 'dafdsf', is_pass=True) old_password = mylib.validate_input(r'^.{6,15}$', '原密码: ', '输入提示: 输入r返回上级菜单', is_pass=True) # 判断用户输入的是否是r,如果是r退出循环 if old_password == 'r': flag = False continue # 获取用户输入的新密码及确认密码 # new_password = input('新密码: ').strip() new_password = mylib.validate_input( r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) # confirm_password = input('确认密码: ').strip() confirm_password = mylib.validate_input( r'^.{6,15}$', '确认密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) old_password = mylib.jiami(old_password) # 判断旧密码是否正确 if old_password == customer['password']: # 判断新密码是否和确认密码一致 if new_password == confirm_password: new_password = mylib.jiami(new_password) # 判断新密码是否和旧密码不一样 if new_password != old_password: # 修改密码 customer['password'] = new_password res, msg = cu.update_customer(customer) input('密码%s,按任意键返回上级菜单' % msg) logger.info('用户%s修改密码,%s' % (customer['username'], msg)) flag = False else: input('新密码和旧密码不能一样,按任意键继续') else: input('新密码和确认密码不一致,按任意键继续') else: input('原密码错误,按任意键继续')
def change_password(): ''' 修改密码函数 :return: 无 ''' flag = True while flag: account = atm.get_crurrent() # 获取用户输入的旧密码 # old_password = input('原密码(输入r返回上级菜单): ').strip() # old_password = mylib.validate_input('\d', 'dafdsf', is_pass=True) old_password = mylib.validate_input(r'^.{6,15}$', '原密码: ', '输入提示: 输入r返回上级菜单', is_pass=True) # 判断用户输入的是否是r,如果是r退出循环 if old_password == 'r': flag = False continue # 获取用户输入的新密码及确认密码 # new_password = input('新密码: ').strip() new_password = mylib.validate_input( r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) # confirm_password = input('确认密码: ').strip() confirm_password = mylib.validate_input( r'^.{6,15}$', '确认密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) old_password = mylib.jiami(old_password) # 判断旧密码是否正确 if old_password == account['password']: # 判断新密码是否和确认密码一致 if new_password == confirm_password: new_password = mylib.jiami(new_password) # 判断新密码是否和旧密码不一样 if new_password != old_password: # 修改密码 account['password'] = new_password res, msg = ac.update_account(account) input('密码%s,按任意键返回上级菜单' % msg) logger.info('atm_main:%s修改密码,%s' % (atm.get_crurrent()['cardid'], msg)) flag = False else: input('新密码和旧密码不能一样,按任意键继续') else: input('新密码和确认密码不一致,按任意键继续') else: input('原密码错误,按任意键继续')
def wrapper(self,*args, **kwargs): if self.__current_account: # 判断是否已经登录 return funce(self, *args, **kwargs) while True: # 如果没有登录执行循环 cardid = mylib.validate_input(r'^\d{9}$','卡号(输入quit退出认证): ', back_str = 'quit') if cardid == 'quit': msg = '认证失败' break password = getpass.getpass('密码: ').strip() res,msg = self.__account.find_by_id(cardid) if not res: input('卡号或密码错误!!请重新输入,按任意键继续。') continue if res.get('status') != '正常': input('您的账户已经%s,请联系银行客服:95588' %res.get('status')) continue if mylib.jiami(password) == res.get('password'): input('认证成功,按任意键继续') self.__current_account = res return funce(self, *args, **kwargs) else: res['error_count'] += 1 #登陆失败次数加1 if res['error_count'] == conf.MAX_ERROR_COUNT: # 判断是否错误次数是否达到阀值 #锁定用户 res['status'] = '锁定' input('您的账户已被锁定,请联系银行客服:95588') else: input('卡号或密码错误!!请重新输入,按任意键继续。') self.__account.update_account(res) # 保存用户信息,主要是修改次数累加和状态
def wrapper(self, *args, **kwargs): if self.__current_account: # 判断是否已经登录 return funce(self, *args, **kwargs) while True: # 如果没有登录执行循环 # accounts = self.__account.get_accounts() cardid = mylib.validate_input(r"^\d{9}$", "卡号(输入quit退出认证): ", back_str="quit") if cardid == "quit": msg = "认证失败" # return False, msg break password = getpass.getpass("密码: ").strip() # password = input('密码: ').strip() res, msg = self.__account.find_by_id(cardid) if not res: input("卡号或密码错误!!请重新输入,按任意键继续。") continue if res.get("status") != "正常": input("您的账户已经%s,请联系银行客服:95588" % res.get("status")) continue if mylib.jiami(password) == res.get("password"): input("认证成功,按任意键继续") self.__current_account = res return funce(self, *args, **kwargs) else: res["error_count"] += 1 # 登陆失败次数加1 if res["error_count"] == conf.MAX_ERROR_COUNT: # 判断是否错误次数是否达到阀值 # 锁定用户 res["status"] = "锁定" input("您的账户已被锁定,请联系银行客服:95588") else: input("卡号或密码错误!!请重新输入,按任意键继续。") self.__account.update_account(res) # 保存用户信息,主要是修改次数累加和状态
def insert_customer(self, username, password, name, tel, mail, address): ''' 创建用户类 :param username: 用户名 :param password: 密码 :param name: 姓名 :param tel: 联系电话 :param mail: 电子邮件 :param address: 地址 :return: 成功返回True,失败返回Fasle ''' if self.__check_user(username): # 判断用户是否存在 msg = '用户名' return False, msg customer_info = { "address": address, "password": mylib.jiami(password), "username": username, "name": name, "mail": mail, "tel": tel, "cart": [] } self.__customers.append(customer_info) if self.__save_customers(): msg = '创建用户成功' return True, msg else: msg = '创建用户失败' self.__customers.remove(customer_info) # 保存用户失败的话,将用户从self.__accounts删除,保证文件与内存的一致 return False, msg
def wrapper(self, *args, **kwargs): if self.__current_account: # 判断是否已经登录 return funce(self, *args, **kwargs) while True: # 如果没有登录执行循环 cardid = mylib.validate_input(r'^\d{9}$', '卡号(输入quit退出认证): ', back_str='quit') if cardid == 'quit': msg = '认证失败' break password = getpass.getpass('密码: ').strip() res, msg = self.__account.find_by_id(cardid) if not res: input('卡号或密码错误!!请重新输入,按任意键继续。') continue if res.get('status') != '正常': input('您的账户已经%s,请联系银行客服:95588' % res.get('status')) continue if mylib.jiami(password) == res.get('password'): input('认证成功,按任意键继续') self.__current_account = res return funce(self, *args, **kwargs) else: res['error_count'] += 1 #登陆失败次数加1 if res['error_count'] == conf.MAX_ERROR_COUNT: # 判断是否错误次数是否达到阀值 #锁定用户 res['status'] = '锁定' input('您的账户已被锁定,请联系银行客服:95588') else: input('卡号或密码错误!!请重新输入,按任意键继续。') self.__account.update_account(res) # 保存用户信息,主要是修改次数累加和状态
def change_password(): ''' 修改密码函数 :return: 无 ''' flag = True while flag: customer = shopping.get_crurrent_customer() if not customer: input('您还没有登录,不能修改密码,请先登录,按任意键继续') flag = False continue # 获取用户输入的旧密码 # old_password = input('原密码(输入r返回上级菜单): ').strip() # old_password = mylib.validate_input('\d', 'dafdsf', is_pass=True) old_password = mylib.validate_input(r'^.{6,15}$', '原密码: ', '输入提示: 输入r返回上级菜单', is_pass=True) # 判断用户输入的是否是r,如果是r退出循环 if old_password == 'r': flag = False continue # 获取用户输入的新密码及确认密码 # new_password = input('新密码: ').strip() new_password = mylib.validate_input(r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) # confirm_password = input('确认密码: ').strip() confirm_password = mylib.validate_input(r'^.{6,15}$', '确认密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) old_password = mylib.jiami(old_password) # 判断旧密码是否正确 if old_password == customer['password']: # 判断新密码是否和确认密码一致 if new_password == confirm_password: new_password = mylib.jiami(new_password) # 判断新密码是否和旧密码不一样 if new_password != old_password: # 修改密码 customer['password'] = new_password res, msg = cu.update_customer(customer) input('密码%s,按任意键返回上级菜单' %msg) logger.info('用户%s修改密码,%s' %(customer['username'], msg)) flag = False else: input('新密码和旧密码不能一样,按任意键继续') else: input('新密码和确认密码不一致,按任意键继续') else: input('原密码错误,按任意键继续')
def change_password(): ''' 修改密码函数 :return: 无 ''' flag = True while flag: account = atm.get_crurrent() # 获取用户输入的旧密码 # old_password = input('原密码(输入r返回上级菜单): ').strip() # old_password = mylib.validate_input('\d', 'dafdsf', is_pass=True) old_password = mylib.validate_input(r'^.{6,15}$', '原密码: ', '输入提示: 输入r返回上级菜单', is_pass=True) # 判断用户输入的是否是r,如果是r退出循环 if old_password == 'r': flag = False continue # 获取用户输入的新密码及确认密码 # new_password = input('新密码: ').strip() new_password = mylib.validate_input(r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) # confirm_password = input('确认密码: ').strip() confirm_password = mylib.validate_input(r'^.{6,15}$', '确认密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) old_password = mylib.jiami(old_password) # 判断旧密码是否正确 if old_password == account['password']: # 判断新密码是否和确认密码一致 if new_password == confirm_password: new_password = mylib.jiami(new_password) # 判断新密码是否和旧密码不一样 if new_password != old_password: # 修改密码 account['password'] = new_password res, msg = ac.update_account(account) input('密码%s,按任意键返回上级菜单' %msg) logger.info('atm_main:%s修改密码,%s' %(atm.get_crurrent()['cardid'], msg)) flag = False else: input('新密码和旧密码不能一样,按任意键继续') else: input('新密码和确认密码不一致,按任意键继续') else: input('原密码错误,按任意键继续')
def login(self, username, password): res, msg = self.__customer.find_by_username(username) #print(customer) if res and res['password'] == mylib.jiami(password): self.__current_customer = res if self.__tmp_cart: for item in self.__tmp_cart: self.add_to_shopping_cart(item, item['num']) self.__tmp_cart = [] self.__customer.update_customer(self.__current_customer) return True else: return False
def insert_account(self, cardid, name, tel, mail, address, max_balance=0): ''' 创建用户类 :param cardid: 卡号 :param name: 账户名 :param tel: 联系电话 :param mail: 电子邮件 :param address: 地址 :param max_balance: 最大可用额度,默认值为配置文件中的MAX_BALANCE值 :return: 成功返回True,失败返回Fasle ''' if self.__check_user(cardid): # 判断用户是否存在 msg = '卡号已经存在' return False, msg if max_balance == 0: max_balance = conf.MAX_BALANCE account_info = { "cardid": cardid, # 卡号 "password": mylib.jiami(conf.DEFAULT_PASSWORD), # 密码 "name": name, # 持卡人姓名 "tel": tel, # 持卡人电话 "mail": mail, # 持卡人邮件,可以考虑邮件发送账单 "address": address, # 持卡人地址 "max_balance": max_balance, # 最高可用余额 "balance": max_balance, # 当前余额 "cash": max_balance / 2, # 提现余额 "arrearage": 0, # 欠款,用来判断是否还清欠款 "arrearage_sum": 0, # 欠款总额,用来计算利息 "is_arrearage": False, "bill": { # 账单 }, "transaction_detail": [], "status": "正常", #账户状态正常、锁定、冻结 "error_count": 0 #密码输入错误次数 } self.__accounts.append(account_info) #accounts = self.__read_accounts() #accounts.append(account_info) #filestr = json.dumps(account_info, self.__account_file) #print(json.dumps(accounts)) if self.__save_accounts(): msg = '创建用户成功' return True, msg else: msg = '创建用户失败' self.__accounts.remove( account_info) # 保存用户失败的话,将用户从self.__accounts删除,保证文件与内存的一致 return False, msg
def auth(self, user_input): ''' 认证方法 :param user_input: 用户输入命令 :return: ''' username = input('username: '******'password: '******'auth|%s|%s' % (username, mylib.jiami(password)))) # 调用服务端的认证方法,验证用户名密码 res = mylib.b2s(self.__sk.recv(100)) # 获取验证结果 print(res) if res == 'ok': # 如果验证成功,修改当前用户名和登录状态 self.__current_user = username self.__is_login = True
def insert_account(self, cardid, name, tel, mail, address, max_balance = 0): ''' 创建用户类 :param cardid: 卡号 :param name: 账户名 :param tel: 联系电话 :param mail: 电子邮件 :param address: 地址 :param max_balance: 最大可用额度,默认值为配置文件中的MAX_BALANCE值 :return: 成功返回True,失败返回Fasle ''' if self.__check_user(cardid): # 判断用户是否存在 msg = '卡号已经存在' return False, msg if max_balance == 0: max_balance = conf.MAX_BALANCE account_info = { "cardid" : cardid, # 卡号 "password" : mylib.jiami(conf.DEFAULT_PASSWORD), # 密码 "name" : name, # 持卡人姓名 "tel" : tel, # 持卡人电话 "mail" : mail, # 持卡人邮件,可以考虑邮件发送账单 "address" : address, # 持卡人地址 "max_balance" : max_balance, # 最高可用余额 "balance" : max_balance, # 当前余额 "cash" : max_balance / 2,# 提现余额 "arrearage" : 0, # 欠款,用来判断是否还清欠款 "arrearage_sum" : 0, # 欠款总额,用来计算利息 "is_arrearage" : False, "bill" : {# 账单 }, "transaction_detail" : [], "status" : "正常", #账户状态正常、锁定、冻结 "error_count" : 0 #密码输入错误次数 } self.__accounts.append(account_info) #accounts = self.__read_accounts() #accounts.append(account_info) #filestr = json.dumps(account_info, self.__account_file) #print(json.dumps(accounts)) if self.__save_accounts(): msg = '创建用户成功' return True, msg else: msg = '创建用户失败' self.__accounts.remove(account_info) # 保存用户失败的话,将用户从self.__accounts删除,保证文件与内存的一致 return False, msg
def wrapper(self, *args, **kwargs): if self.__admin_login: return funce(self, *args, **kwargs) while True: # 如果没有登录执行循环 username = input('用户名(输入quit退出):').strip() if username == 'quit': break password = getpass.getpass('密码: ').strip() if username != conf.ADMIN_USER: input('用户名或密码错误,按任意键继续') continue if mylib.jiami(password) == conf.ADMIN_PASSWORD: input('认证成功,按任意键继续') self.__admin_login = True return funce(self, *args, **kwargs) else: input('用户名或密码错误,按任意键继续')
def wrapper(self,*args, **kwargs): if self.__admin_login: return funce(self, *args, **kwargs) while True: # 如果没有登录执行循环 username = input('用户名(输入quit退出):').strip() if username == 'quit': break password = getpass.getpass('密码: ').strip() if username != conf.ADMIN_USER: input('用户名或密码错误,按任意键继续') continue if mylib.jiami(password) == conf.ADMIN_PASSWORD: input('认证成功,按任意键继续') self.__admin_login = True return funce(self, *args, **kwargs) else: input('用户名或密码错误,按任意键继续')
def login(self, username, password): ''' 登录方法 :param username: 用户名 :param password: 密码 :return: 成功返回True否则返回False ''' res, msg = self.__customer.find_by_username(username) if res and res['password'] == mylib.jiami(password): self.__current_customer = res if self.__tmp_cart: for item in self.__tmp_cart: self.add_to_shopping_cart(item, item['num']) self.__tmp_cart = [] self.__customer.update_customer(self.__current_customer) return True else: return False
def auth(self, user_input): ''' 认证方法 :param user_input: 用户输入命令 :return: ''' if len(user_input) == 1: username = input('username: '******'password: '******'auth|{"username":"******", "password":"******"}' % (username, mylib.jiami(password)))) # 调用服务端的认证方法,验证用户名密码 res = mylib.b2s(self.__sk.recv(200)) # 获取验证结果 print(self.__code_list[res]) if res == '200': # 如果验证成功,修改当前用户名和登录状态 self.__current_user = username self.__is_login = True else: print(self.__code_list['401'])
def wrapper(self, *args, **kwargs): # if self.__current_account: # 判断是否已经登录 # return funce(self, *args, **kwargs) if self.__admin_login: return funce(self, *args, **kwargs) while True: # 如果没有登录执行循环 username = input("用户名(输入quit退出):").strip() if username == "quit": msg = "认证失败" # return False, msg break password = getpass.getpass("密码: ").strip() if username != conf.ADMIN_USER: input("用户名或密码错误,按任意键继续") continue if mylib.jiami(password) == conf.ADMIN_PASSWORD: input("认证成功,按任意键继续") self.__admin_login = True return funce(self, *args, **kwargs) else: input("用户名或密码错误,按任意键继续")
def auth(self, user_input): ''' 认证方法 :param user_input: 用户输入命令 :return: ''' if len(user_input) ==1: username = input('username: '******'password: '******'auth|{"username":"******", "password":"******"}' % (username, mylib.jiami(password)))) # 调用服务端的认证方法,验证用户名密码 res = mylib.b2s(self.__sk.recv(200)) # 获取验证结果 print(self.__code_list[res]) if res == '200': # 如果验证成功,修改当前用户名和登录状态 self.__current_user = username self.__is_login = True else: print(self.__code_list['401'])