From b6c3e9aa037f8ceed04dec25ad9cbc08470c3177 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 20 Dec 2021 12:54:10 +1100 Subject: [PATCH] FEATURE: hide_email_address_taken forces use of email in forgot password form (#15362) * FEATURE: hide_email_address_taken forces use of email in forgot password form This strengthens this site setting which is meant to be used to harden sites that are experiencing abuse on forgot password routes. Previously we would only deny letting people know if forgot password worked on not New change also bans usage of username for forgot password when enabled --- .../app/controllers/forgot-password.js | 10 +++++++- .../app/templates/modal/forgot-password.hbs | 9 ++++++-- app/controllers/session_controller.rb | 9 ++++++-- config/locales/client.en.yml | 1 + config/locales/server.en.yml | 2 +- config/site_settings.yml | 4 +++- spec/requests/session_controller_spec.rb | 23 +++++++++++++++++++ 7 files changed, 51 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/discourse/app/controllers/forgot-password.js b/app/assets/javascripts/discourse/app/controllers/forgot-password.js index d2887d43a62..1471541673b 100644 --- a/app/assets/javascripts/discourse/app/controllers/forgot-password.js +++ b/app/assets/javascripts/discourse/app/controllers/forgot-password.js @@ -15,7 +15,15 @@ export default Controller.extend(ModalFunctionality, { @discourseComputed("accountEmailOrUsername", "disabled") submitDisabled(accountEmailOrUsername, disabled) { - return isEmpty((accountEmailOrUsername || "").trim()) || disabled; + if (disabled) { + return true; + } + + if (this.siteSettings.hide_email_address_taken) { + return (accountEmailOrUsername || "").indexOf("@") === -1; + } else { + return isEmpty((accountEmailOrUsername || "").trim()); + } }, onShow() { diff --git a/app/assets/javascripts/discourse/app/templates/modal/forgot-password.hbs b/app/assets/javascripts/discourse/app/templates/modal/forgot-password.hbs index 9e850979064..ccaa83d673e 100644 --- a/app/assets/javascripts/discourse/app/templates/modal/forgot-password.hbs +++ b/app/assets/javascripts/discourse/app/templates/modal/forgot-password.hbs @@ -3,8 +3,13 @@ {{#if offerHelp}} {{html-safe offerHelp}} {{else}} - - {{text-field value=accountEmailOrUsername placeholderKey="login.email_placeholder" id="username-or-email" autocorrect="off" autocapitalize="off"}} + {{#if siteSettings.hide_email_address_taken}} + + {{text-field value=accountEmailOrUsername placeholderKey="email" id="username-or-email" autocorrect="off" autocapitalize="off"}} + {{else}} + + {{text-field value=accountEmailOrUsername placeholderKey="login.email_placeholder" id="username-or-email" autocorrect="off" autocapitalize="off"}} + {{/if}} {{/if}} {{/d-modal-body}}