def acc_auth_ordinary(account, password): """ 普通认证接口,局限于文件处理 # 下面的 acc_auth() 已进行优化,可拓展 链接数据库 :param account: credit account number :param password: credit card password :return: if passed the authentication , return the account object, otherwise ,return None : 如果通过认证,返回从文件加载的用户数据;否则返回空 """ db_path = db_handler.db_handler(settings.DATABASE) # 用户账户路径 account_file = '%s%s.json' % (db_path, account) # 用户文件 if os.path.isfile(account_file): # 如果本地有该用户数据文件(已经注册的用户) with open(account_file, 'r') as f: account_data = json.load(f) if account_data['password'] == password: # 信用卡过期时间 Expire_Time = time.mktime( time.strptime(account_data['Expire Date'], '%Y-%m-%d')) if time.time() > Expire_Time: # 信用卡失效 print('\033[31;1m账号 [%s] 已经失效, 请与联系银行办理新的信用卡!\033[0m' % account) else: # 通过认证则返回存储在本地的用户账户数据 return account_data else: print('\033[31;1m账号或密码错误!\033[0m') else: print('\033[31;1m账户 [%s] 不存在!\033[0m' % account)
def acc_login_v(account, password, log_obj): """ 登录验证 :param account: :param password: :param log_obj: :return: """ db_path = r'%s/%s' % (db_handler(DATABASE), account) if os.path.exists(db_path): with open(db_path, 'r') as acc_f: account_data = json.load(acc_f) if account_data['acc_status'] != 0: log_obj.info( 'user {0} login failed, account is locked '.format(account)) return False else: if account_data['password'] == password: log_obj.info('user {0} login success'.format(account)) # print(type(account_data), account_data) del account_data['password'] return account_data else: log_obj.info( 'user {0} login failed, wrong password'.format(account)) return False else: log_obj.info('user {0} login failed, no such account'.format(account)) return False
def load_current_balance(account_id): """ # 返回当前账户信息 return account balance and other basic info :param account_id: :return: """ db_api = db_handler.db_handler() data = db_api('select * from account where account=%s' % account_id) return data
def dump_account(account_data): """ # 更新事务或帐户数据后,将其转储回文件db after updated transaction or account data , dump it back to file db :param account_data: :return: """ db_api = db_handler.db_handler() data = db_api("update user where account=%s" % account_data['Account'], account_data=account_data) return True
def change_user_data(account, **kwargs): """ 修改用户信息并返回用户新信息 :param account: :param kwargs: :return: """ db_path = r'%s/%s' % (db_handler( DATABASE ), account) with open( db_path, 'r' ) as acc_f: account_data = json.load(acc_f) if kwargs != {}: for i in kwargs: account_data[i] = kwargs.get(i) with open( db_path, 'w' ) as acc_f: json.dump(account_data, acc_f) del account_data['password'] return account_data
def acc_auth(account, password): """ 优化认证接口,可拓展数据库 :param account: credit account number :param password: credit card password :return: if passed the authentication , return the account object, otherwise ,return None : 如果通过认证,返回从文件加载的用户数据;否则返回空 """ db_api = db_handler.db_handler() data = db_api('select * from account where account=%s' % account) if data['Password'] == password: Expire_Time = time.mktime( time.strptime(data['Expire Date'], '%Y-%m-%d')) if time.time() > Expire_Time: print('\033[31;1m账号 [%s] 已经失效, 请与联系银行办理新的信用卡!\033[0m' % account) else: return data else: print('\033[31;1m账号或密码错误!\033[0m')