Skip to content

Commit 55c50cc

Browse files
authored
Merge pull request #207 from qld-gov-au/QOLDEV-955-qgov-2.11-changes
[QOLDEV-955] adapt login failure message if reCAPTCHA is enabled
2 parents 88e470d + 17dceef commit 55c50cc

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

ckan/tests/controllers/test_user.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,33 @@ def test_registered_user_login_bad_password(self, app):
223223
not in response
224224
)
225225

226+
@pytest.mark.ckan_config("ckan.recaptcha.privatekey", "foo")
227+
def test_registered_user_login_bad_password_or_captcha(self, app):
228+
"""
229+
Registered user is redirected to appropriate place if they submit
230+
invalid login details at /user/login.
231+
Login failure gives a different message if reCAPTCHA is enabled.
232+
"""
233+
234+
# make a user
235+
user = factories.User()
236+
237+
# get the form
238+
response = app.post(
239+
url_for("user.login"),
240+
data={"login": user["name"], "password": "BadPass1", "save": ""},
241+
)
242+
243+
# the response is the login page again
244+
assert '<h1 class="page-heading">Login</h1>' in response
245+
assert "Login failed. Bad username or password or CAPTCHA." in response
246+
# and we're definitely not on the dashboard.
247+
assert '<a href="/dashboard">Dashboard</a>' not in response
248+
assert (
249+
'<span class="username">{0}</span>'.format(user["fullname"])
250+
not in response
251+
)
252+
226253
def test_user_logout_url_redirect(self, app, user):
227254
"""_logout url redirects to logged out page.
228255
"""

ckan/views/user.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,10 @@ def login() -> Union[Response, str]:
587587
rotate_token()
588588
return next_page_or_default(next)
589589
else:
590-
err = _(u"Login failed. Bad username or password.")
590+
if config.get('ckan.recaptcha.privatekey'):
591+
err = _(u"Login failed. Bad username or password or CAPTCHA.")
592+
else:
593+
err = _(u"Login failed. Bad username or password.")
591594
h.flash_error(err)
592595
return base.render("user/login.html", extra_vars)
593596

0 commit comments

Comments
 (0)