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) {