From c1c9993e783a1d3ddac2570c752d5c7d158f974c Mon Sep 17 00:00:00 2001 From: awesomerobot Date: Thu, 8 May 2025 09:23:48 -0400 Subject: [PATCH] UX: don't always fill username for forgot password --- .../discourse/app/components/local-login-form.gjs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/app/components/local-login-form.gjs b/app/assets/javascripts/discourse/app/components/local-login-form.gjs index 8cc21aab3174d..b34b4db8be86a 100644 --- a/app/assets/javascripts/discourse/app/components/local-login-form.gjs +++ b/app/assets/javascripts/discourse/app/components/local-login-form.gjs @@ -25,6 +25,7 @@ import { i18n } from "discourse-i18n"; export default class LocalLoginForm extends Component { @service modal; + @service siteSettings; @tracked maskPassword = true; @tracked processingEmailLink = false; @@ -129,9 +130,20 @@ export default class LocalLoginForm extends Component { handleForgotPassword(event) { event?.preventDefault(); + let filledLoginName = this.args.loginName; + + // no spaces, at least one dot, one @ with one or more characters before & after + const likelyEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test( + filledLoginName?.trim() + ); + + if (this.siteSettings.hide_email_address_taken && !likelyEmail) { + filledLoginName = null; + } + this.modal.show(ForgotPassword, { model: { - emailOrUsername: this.args.loginName, + emailOrUsername: filledLoginName, }, }); }