Merge pull request #9432 from mvdbeek/restore_non_lowercase_access

[20.01] Fix login to accounts using different email capitalization
This commit is contained in:
Dannon
2020-02-25 16:28:11 -05:00
committed by GitHub
2 changed files with 8 additions and 2 deletions
+3 -1
View File
@@ -489,7 +489,9 @@ class UserManager(base.ModelManager, deletable.PurgableManagerMixin):
return "Failed to produce password reset token. User not found."
def get_reset_token(self, trans, email):
reset_user = trans.sa_session.query(self.app.model.User).filter(func.lower(self.app.model.User.table.c.email) == email.lower()).first()
reset_user = trans.sa_session.query(self.app.model.User).filter(self.app.model.User.table.c.email == email.lower()).first()
if not reset_user and email != email.lower():
reset_user = trans.sa_session.query(self.app.model.User).filter(func.lower(self.app.model.User.table.c.email) == email.lower()).first()
if reset_user:
prt = self.app.model.PasswordResetToken(reset_user)
trans.sa_session.add(prt)
@@ -135,9 +135,13 @@ class User(BaseUIController, UsesFormDefinitionsMixin, CreatesApiKeysMixin):
if not login or not password:
return self.message_exception(trans, "Please specify a username and password.")
user = trans.sa_session.query(trans.app.model.User).filter(or_(
func.lower(trans.app.model.User.table.c.email) == login.lower(),
trans.app.model.User.table.c.email == login,
trans.app.model.User.table.c.username == login
)).first()
if not user and login.lower() != login:
user = trans.sa_session.query(trans.app.model.User).filter(
func.lower(trans.app.model.User.table.c.email) == login.lower()
).first()
log.debug("trans.app.config.auth_config_file: %s" % trans.app.config.auth_config_file)
if user is None:
message, user = self.__autoregistration(trans, login, password)