From ecf4dbfb18edf01d1f8dd6682b97371540447fa8 Mon Sep 17 00:00:00 2001 From: Bruno Sanches Date: Tue, 6 Jun 2023 18:14:08 -0300 Subject: [PATCH] Check if formData is empty before putting login hint (#20733) closes keycloak#20732 --- .../freemarker/FreeMarkerLoginFormsProvider.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java b/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java index 22a3569834..e43ca28aec 100755 --- a/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java +++ b/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java @@ -586,11 +586,19 @@ public class FreeMarkerLoginFormsProvider implements LoginFormsProvider { public Response createRegistration() { String loginHint = authenticationSession.getClientNote(OIDCLoginProtocol.LOGIN_HINT_PARAM); if (loginHint != null && !loginHint.isEmpty()) { - this.formData = new MultivaluedHashMap<>(); + if (this.formData == null) { + this.formData = new MultivaluedHashMap<>(); + } if(this.realm.isRegistrationEmailAsUsername()) { - this.formData.putSingle("email", loginHint); + String value = this.formData.getFirst("email"); + if (value == null || value.trim().isEmpty()) { + this.formData.putSingle("email", loginHint); + } } else { - this.formData.putSingle("username", loginHint); + String value = this.formData.getFirst("username"); + if (value == null || value.trim().isEmpty()) { + this.formData.putSingle("username", loginHint); + } } }