fixing bugs with email ignore case feature

This commit is contained in:
forest 2020-12-29 19:03:37 -06:00
parent ff38858c74
commit eba3bd6a5a
2 changed files with 7 additions and 7 deletions

View File

@ -50,15 +50,15 @@ def login():
errors.append("too many logins. please use one of the existing login links that have been emailed to you") errors.append("too many logins. please use one of the existing login links that have been emailed to you")
else: else:
link = f"{current_app.config['BASE_URL']}/auth/magic/{token}" link = f"{current_app.config['BASE_URL']}/auth/magic/{token}"
message = (f"Navigate to {link} to log into Capsul.\n" message = (f"Navigate to {link} to log into Capsul.\n"
"\nIf you didn't request this, ignore this message.") "\nIf you didn't request this, ignore this message.")
if len(ignoreCaseMatches) > 0: if len(ignoreCaseMatches) > 0:
joinedMatches = " or ".join(ignoreCaseMatches) joinedMatches = " or ".join(map(lambda x: f"'{x}'", ignoreCaseMatches))
message = (f"You tried to log in as '{email}', but that account doesn't exist yet. " message = (f"You tried to log in as '{email}', but that account doesn't exist yet. \n"
"If you would like to create a new account for '{email}', click here {link} " f"If you would like to create a new account for '{email}', click here {link} \n\n"
"If you meant to log in as {joinedMatches}, please return to capsul.org " f"If you meant to log in as {joinedMatches}, please return to https://capsul.org \n"
"and log in again with the correct (case-sensitive) email address.") "and log in again with the correct (case-sensitive) email address.")
current_app.config["FLASK_MAIL_INSTANCE"].send( current_app.config["FLASK_MAIL_INSTANCE"].send(

View File

@ -15,8 +15,8 @@ class DBModel:
everLoggedIn = len(self.cursor.fetchall()) everLoggedIn = len(self.cursor.fetchall())
ignoreCaseMatches = [] ignoreCaseMatches = []
if everLoggedIn == 0: if everLoggedIn == 0:
self.cursor.execute("SELECT email FROM accounts WHERE lower_case_email = %s", (email.lower(), )) self.cursor.execute("SELECT email FROM accounts WHERE lower_case_email = %s AND email != %s", (email.lower(), email))
ignoreCaseMatches = self.cursor.fetchall() ignoreCaseMatches = list(map(lambda x: x[0], self.cursor.fetchall()))
if hasExactMatch == 0: if hasExactMatch == 0:
self.cursor.execute("INSERT INTO accounts (email, lower_case_email) VALUES (%s, %s)", (email, email.lower())) self.cursor.execute("INSERT INTO accounts (email, lower_case_email) VALUES (%s, %s)", (email, email.lower()))