def send_reset_code(username): gmail_email = sql_manager.get_email(username) reset_code = password_handler._generate_hash_pw(generatePassword(10), "sha1") TEXT = "Reset/confirmation code <{}>.".format(reset_code) BODY = '\r\n'.join([ 'To: {}'.format(gmail_email), 'From: [email protected]', 'Subject: Your reset/confirmation code for username {}'.format( username), '', TEXT ]) if send_email(username, gmail_email, TEXT, BODY) is True: reset_code = password_handler._generate_hash_pw(reset_code, "sha224") sql_manager.add_reset_code(username, reset_code) return True return False
def reset_password(username, received_code): username = input("Enter your username: "******"Reset code: ") received_code = password_handler._generate_hash_pw(received_code, "sha224") if received_code == sql_manager.get_reset_code(username): print("Codes match!") new_password = getpass("Your new password: "******"sha1") try: sql_manager.change_pass_by_username(username, new_password) except Exception as e: print(e) print("No such username.") return print("Password changed.")
def register(username, password, email): if password_handler.check_password(password) is True: password = password_handler._generate_hash_pw(password, "sha1") try: sql_manager.register(username, password, email) except Exception: print("Username already exists.") return print("Registration successful.") else: print("Your password sucks. Think of a better one and try again to register.")
def change_pass(logged_user): smtp_handler.send_reset_code(logged_user.get_username()) received_code = input("The code you received: ") if sql_manager.get_reset_code(logged_user.get_username()) == received_code: new_pass = getpass("Enter your new password: "******"sha1") sql_manager.change_pass(new_pass, logged_user) else: print("Your new password sucks. Think of a better one!") else: print("The entered code isn't valid.")
def send_tan_codes(username): if sql_manager.are_available_tan_codes(username) is True: print( "You have available TAN codes. Use them before you generate new ones." ) return tan_codes = [] for i in range(10): tan_code = password_handler._generate_hash_pw(generatePassword(10), "sha224") tan_codes.append(tan_code) TEXT = "TAN CODES: {}.".format("\n".join(tan_codes)) gmail_email = sql_manager.get_email(username) BODY = '\r\n'.join([ 'To: {}'.format(gmail_email), 'From: [email protected]', 'Subject: Your TAN code for username {}'.format(username), '', TEXT ]) if send_email(username, gmail_email, TEXT, BODY) is True: sql_manager.delete_tan_codes(username) for tan_code in tan_codes: tan_code = password_handler._generate_hash_pw(tan_code, "sha224") sql_manager.add_tan_code(username, tan_code) return True
def deposit(logged_user): if sql_manager.are_available_tan_codes(logged_user.get_username()) is True: amount = float(input("amount: ")) tan_code = input("TAN code: ") tan_code = password_handler._generate_hash_pw(tan_code, "sha224") if tan_code in sql_manager.get_all_tan_codes( logged_user.get_username()): logged_user.deposit(amount) sql_manager.update_balance(logged_user.get_balance(), logged_user.get_username()) sql_manager.delete_tan_code(logged_user.get_username(), tan_code) print("Transaction successful.") else: print("Invalid TAN code.") else: print( "You have 0 remaining TAN codes. Please generate more with <send-tan-codes>" )
def login(username): try: if abs(time() - sql_manager.get_current_time(username)) > 300: sql_manager.reset_failed_logins() except IOError: print("No such username.") return if sql_manager.get_attempts(username) < 21: password = getpass("Enter your password: "******"sha1") logged_user = sql_manager.login(username, password) if logged_user: sql_manager.reset_failed_login(username) logged_menu(logged_user) else: sql_manager.failed_login(username) print("Login failed") else: print("Number of login attempts(20) exceeded. Wait 5 minutes before attempting to login.")