import re from bcrypt import checkpw from survey.lib.utils import send_confirmation_email, generate_code, encrypt_code, insert_code, fetch_code, mark_info def email_error_message(player, value): match = re.search("^([a-zA-Z\d\-_\.]+?)@um\.edu\.mt$", value) if not match: return "E-mail needs to be a valid '@um.edu.mt' address." if not fetch_code(value): code = generate_code(base=match.group(1)) if not send_confirmation_email(receiver_email=value, code=code): return "Failed to send code via e-mail. Please try again later." hashed_code = encrypt_code(code) if not insert_code(new_email=value, new_code=hashed_code): return "Failed to save code. Please try again later." def code_error_message(player, value): saved_code = fetch_code(player.email) encoding = "utf-8" enc_input_code = value.encode(encoding) enc_saved_code= saved_code.encode(encoding) if not checkpw(enc_input_code, enc_saved_code): return "Invalid code entered. Please enter the correct code that was sent." player.code = "REDACTED" def country_error_message(player, value): mark_info(player.email)