Skip to content

Commit 66940ca

Browse files
authored
Merge pull request #20801 from jdavcs/25.0_20687
[25.0] Fix password reset functionality for lowercase emails
2 parents d812248 + 429366e commit 66940ca

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

lib/galaxy/managers/users.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ def send_reset_email(self, trans, payload, **kwd):
580580

581581
def get_reset_token(self, trans, email):
582582
reset_user = get_user_by_email(trans.sa_session, email, self.app.model.User)
583-
if not reset_user and email != email.lower():
583+
if not reset_user:
584584
reset_user = self._get_user_by_email_case_insensitive(trans.sa_session, email)
585585
if reset_user and not reset_user.deleted:
586586
prt = self.app.model.PasswordResetToken(reset_user)

lib/galaxy/security/validate_user_input.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ def validate_email(trans, email, user=None, check_dup=True, allow_empty=False, v
8585
Validates the email format.
8686
Checks whether the domain is blocklisted in the disposable domains configuration.
8787
Checks whether the email address is banned.
88+
Optionally checks if email exists.
8889
"""
8990
if (user and user.email == email) or (email == "" and allow_empty):
9091
return ""

test/unit/webapps/test_login.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
from galaxy.util.unittest import TestCase
1212
from galaxy.webapps.galaxy.controllers.user import User
1313

14-
admin_email = "admin@admin.admin"
14+
admin_email = "admin@example.org"
1515
admin_users = admin_email
1616
default_password = "123456"
1717
changed_password = "654321"
18-
user2_data = dict(email="[email protected]", username="user2", password=default_password)
18+
user2_data = dict(email="[email protected]", username="user2", password=default_password)
1919

2020

2121
class TestLoginController(TestCase):
@@ -84,3 +84,14 @@ def test_login(self):
8484
controller.login(self.trans, payload={"login": user2.username, "password": default_password})
8585
)
8686
assert response["message"] == "Success."
87+
88+
def test_get_reset_token(self):
89+
def _check_reset_token(email):
90+
reset_user, prt = self.user_manager.get_reset_token(self.trans, email)
91+
assert user2 == reset_user
92+
assert prt.user == user2
93+
94+
user2 = self.user_manager.create(**user2_data)
95+
_check_reset_token(user2_data["email"])
96+
_check_reset_token(user2_data["email"].lower())
97+
_check_reset_token(user2_data["email"].upper())

0 commit comments

Comments
 (0)