keycloak-memoizeit

Details

diff --git a/forms/src/main/resources/META-INF/resources/forms/theme/default/register.ftl b/forms/src/main/resources/META-INF/resources/forms/theme/default/register.ftl
index b418da1..c9b5997 100755
--- a/forms/src/main/resources/META-INF/resources/forms/theme/default/register.ftl
+++ b/forms/src/main/resources/META-INF/resources/forms/theme/default/register.ftl
@@ -14,8 +14,12 @@
     <form action="${url.registrationAction}" method="post">
         <p class="subtitle">${rb.getString('allRequired')}</p>
         <div>
-            <label for="name">${rb.getString('fullName')}</label>
-            <input type="text" id="name" name="name" value="${register.formData.name!''}" />
+            <label for="firstName">${rb.getString('firstName')}</label>
+            <input type="text" id="firstName" name="firstName" value="${register.formData.firstName!''}" />
+        </div>
+        <div>
+            <label for="lastName">${rb.getString('lastName')}</label>
+            <input type="text" id="lastName" name="lastName" value="${register.formData.lastName!''}" />
         </div>
         <div>
             <label for="email">${rb.getString('email')}</label>
diff --git a/forms/src/main/resources/org/keycloak/forms/messages.properties b/forms/src/main/resources/org/keycloak/forms/messages.properties
index 50e21b6..4ce9a69 100644
--- a/forms/src/main/resources/org/keycloak/forms/messages.properties
+++ b/forms/src/main/resources/org/keycloak/forms/messages.properties
@@ -25,7 +25,8 @@ invalidUser=Invalid username or password
 invalidPassword=Invalid username or password
 accountDisabled=Account is disabled, contact admin
 
-missingName=Please specify full name
+missingFirstName=Please specify first name
+missingLastName=Please specify last name
 missingEmail=Please specify email
 missingUsername=Please specify username
 missingPassword=Please specify password
@@ -37,4 +38,4 @@ invalidTotp=Invalid authenticator code
 
 usernameExists=Username already exists
 
-error=A system error has occured, contact admin
\ No newline at end of file
+error=A system error has occured, contact admin
diff --git a/services/src/main/java/org/keycloak/services/messages/Messages.java b/services/src/main/java/org/keycloak/services/messages/Messages.java
index c6165a9..3b7a760 100644
--- a/services/src/main/java/org/keycloak/services/messages/Messages.java
+++ b/services/src/main/java/org/keycloak/services/messages/Messages.java
@@ -38,7 +38,9 @@ public class Messages {
 
     public static final String MISSING_EMAIL = "missingEmail";
 
-    public static final String MISSING_NAME = "missingName";
+    public static final String MISSING_FIRST_NAME = "missingFirstName";
+
+    public static final String MISSING_LAST_NAME = "missingLastName";
 
     public static final String MISSING_PASSWORD = "missingPassword";
 
diff --git a/services/src/main/java/org/keycloak/services/resources/TokenService.java b/services/src/main/java/org/keycloak/services/resources/TokenService.java
index 5abebb0..ec7410a 100755
--- a/services/src/main/java/org/keycloak/services/resources/TokenService.java
+++ b/services/src/main/java/org/keycloak/services/resources/TokenService.java
@@ -286,30 +286,8 @@ public class TokenService {
         }
 
         user = realm.addUser(username);
-
-        String fullname = formData.getFirst("name");
-        if (fullname != null) {
-            StringTokenizer tokenizer = new StringTokenizer(fullname, " ");
-            StringBuffer first = null;
-            String last = "";
-            while (tokenizer.hasMoreTokens()) {
-                String token = tokenizer.nextToken();
-                if (tokenizer.hasMoreTokens()) {
-                    if (first == null) {
-                        first = new StringBuffer();
-                    } else {
-                        first.append(" ");
-                    }
-                    first.append(token);
-                } else {
-                    last = token;
-                }
-            }
-            if (first == null)
-                first = new StringBuffer();
-            user.setFirstName(first.toString());
-            user.setLastName(last);
-        }
+        user.setFirstName(formData.getFirst("firstName"));
+        user.setLastName(formData.getFirst("lastName"));
 
         user.setEmail(formData.getFirst("email"));
 
diff --git a/services/src/main/java/org/keycloak/services/validation/Validation.java b/services/src/main/java/org/keycloak/services/validation/Validation.java
index 58b0650..5a71f0d 100755
--- a/services/src/main/java/org/keycloak/services/validation/Validation.java
+++ b/services/src/main/java/org/keycloak/services/validation/Validation.java
@@ -9,8 +9,12 @@ import java.util.List;
 public class Validation {
 
     public static String validateRegistrationForm(MultivaluedMap<String, String> formData, List<String> requiredCredentialTypes) {
-        if (isEmpty(formData.getFirst("name"))) {
-            return Messages.MISSING_NAME;
+        if (isEmpty(formData.getFirst("firstName"))) {
+            return Messages.MISSING_FIRST_NAME;
+        }
+
+        if (isEmpty(formData.getFirst("lastName"))) {
+            return Messages.MISSING_LAST_NAME;
         }
 
         if (isEmpty(formData.getFirst("email"))) {
diff --git a/testsuite/src/test/java/org/keycloak/testsuite/actions/RequiredActionEmailVerificationTest.java b/testsuite/src/test/java/org/keycloak/testsuite/actions/RequiredActionEmailVerificationTest.java
index ba9104e..26b9e55 100644
--- a/testsuite/src/test/java/org/keycloak/testsuite/actions/RequiredActionEmailVerificationTest.java
+++ b/testsuite/src/test/java/org/keycloak/testsuite/actions/RequiredActionEmailVerificationTest.java
@@ -109,7 +109,7 @@ public class RequiredActionEmailVerificationTest {
     public void verifyEmailRegister() throws IOException, MessagingException {
         loginPage.open();
         loginPage.clickRegister();
-        registerPage.register("name", "email", "verifyEmail", "password", "password");
+        registerPage.register("firstName", "lastName", "email", "verifyEmail", "password", "password");
 
         Assert.assertTrue(driver.getPageSource().contains("Verify email"));
 
diff --git a/testsuite/src/test/java/org/keycloak/testsuite/actions/RequiredActionTotpSetupTest.java b/testsuite/src/test/java/org/keycloak/testsuite/actions/RequiredActionTotpSetupTest.java
index e89125e..cf05276 100644
--- a/testsuite/src/test/java/org/keycloak/testsuite/actions/RequiredActionTotpSetupTest.java
+++ b/testsuite/src/test/java/org/keycloak/testsuite/actions/RequiredActionTotpSetupTest.java
@@ -85,7 +85,7 @@ public class RequiredActionTotpSetupTest {
     public void setupTotpRegister() {
         loginPage.open();
         loginPage.clickRegister();
-        registerPage.register("name", "email", "setupTotp", "password", "password");
+        registerPage.register("firstName", "lastName", "email", "setupTotp", "password", "password");
 
         totpPage.assertCurrent();
 
diff --git a/testsuite/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java b/testsuite/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java
index 4862cf6..93e773e 100644
--- a/testsuite/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java
+++ b/testsuite/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java
@@ -63,7 +63,7 @@ public class RegisterTest {
         loginPage.clickRegister();
         registerPage.assertCurrent();
 
-        registerPage.register("name", "email", "test-user@localhost", "password", "password");
+        registerPage.register("firstName", "lastName", "email", "test-user@localhost", "password", "password");
 
         registerPage.assertCurrent();
         Assert.assertEquals("Username already exists", registerPage.getError());
@@ -75,7 +75,7 @@ public class RegisterTest {
         loginPage.clickRegister();
         registerPage.assertCurrent();
 
-        registerPage.register("name", "email", "registerUserInvalidPasswordConfirm", "password", "invalid");
+        registerPage.register("firstName", "lastName", "email", "registerUserInvalidPasswordConfirm", "password", "invalid");
 
         registerPage.assertCurrent();
         Assert.assertEquals("Password confirmation doesn't match", registerPage.getError());
@@ -87,7 +87,7 @@ public class RegisterTest {
         loginPage.clickRegister();
         registerPage.assertCurrent();
 
-        registerPage.register("name", "email", "registerUserMissingPassword", null, null);
+        registerPage.register("firstName", "lastName", "email", "registerUserMissingPassword", null, null);
 
         registerPage.assertCurrent();
         Assert.assertEquals("Please specify password", registerPage.getError());
@@ -99,7 +99,7 @@ public class RegisterTest {
         loginPage.clickRegister();
         registerPage.assertCurrent();
 
-        registerPage.register("name", "email", null, "password", "password");
+        registerPage.register("firstName", "lastName", "email", null, "password", "password");
 
         registerPage.assertCurrent();
         Assert.assertEquals("Please specify username", registerPage.getError());
@@ -111,7 +111,7 @@ public class RegisterTest {
         loginPage.clickRegister();
         registerPage.assertCurrent();
 
-        registerPage.register("name", "email", "registerUserSuccess", "password", "password");
+        registerPage.register("firstName", "lastName", "email", "registerUserSuccess", "password", "password");
 
         Assert.assertEquals(RequestType.AUTH_RESPONSE, appPage.getRequestType());
     }
diff --git a/testsuite/src/test/java/org/keycloak/testsuite/pages/RegisterPage.java b/testsuite/src/test/java/org/keycloak/testsuite/pages/RegisterPage.java
index 8970704..7ff4d7f 100644
--- a/testsuite/src/test/java/org/keycloak/testsuite/pages/RegisterPage.java
+++ b/testsuite/src/test/java/org/keycloak/testsuite/pages/RegisterPage.java
@@ -29,8 +29,11 @@ import org.openqa.selenium.support.FindBy;
  */
 public class RegisterPage extends Page {
 
-    @FindBy(id = "name")
-    private WebElement nameInput;
+    @FindBy(id = "firstName")
+    private WebElement firstNameInput;
+
+    @FindBy(id = "lastName")
+    private WebElement lastNameInput;
 
     @FindBy(id = "email")
     private WebElement emailInput;
@@ -50,9 +53,13 @@ public class RegisterPage extends Page {
     @FindBy(id = "loginError")
     private WebElement loginErrorMessage;
 
-    public void register(String name, String email, String username, String password, String passwordConfirm) {
-        if (name != null) {
-            nameInput.sendKeys(name);
+    public void register(String firstName, String lastName, String email, String username, String password, String passwordConfirm) {
+        if (firstName != null) {
+            firstNameInput.sendKeys(firstName);
+        }
+
+        if (lastName != null) {
+            lastNameInput.sendKeys(lastName);
         }
 
         if (email != null) {