Added parameters full name and company to

UserManagementService.createSimpleUser method
This commit is contained in:
Benjamin Barth committed 2016-01-21 16:28:04 +01:00
1 parent 7acb3890b0
commit 842d64d5e5
11 files changed
+142 -138

No files matched your search

@@ -50,23 +50,13 @@ public class CreateAccountActivity extends AbstractActivity implements CreateAcc
return;
}
clientFactory.getUserManagement().createSimpleUser(username, email, password, callback.getCreateConfirmationUrl(),
new AsyncCallback<UserDTO>() {
clientFactory.getUserManagement().createSimpleUser(username, email, password, fullName, company,
callback.getCreateConfirmationUrl(), new AsyncCallback<UserDTO>() {
@Override
public void onSuccess(final UserDTO result) {
clientFactory.getUserManagement().updateUserProperties(username, fullName, company, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void noResult) {
clientFactory.getUserManagement().login(result.getName(), password,
new AsyncLoginCallback(clientFactory, view, callback, false));
placeController.goTo(new ConfirmationPlace(Action.ACCOUNT_CREATED, username));
}
@Override
public void onFailure(Throwable caught) {
Window.alert(i18n_sec.errorUpdatingUserProperties(caught.getMessage()));
}
});
clientFactory.getUserManagement().login(result.getName(), password,
new AsyncLoginCallback(clientFactory, view, callback, false));
placeController.goTo(new ConfirmationPlace(Action.ACCOUNT_CREATED, username));
}
@Override
@@ -100,7 +100,8 @@ public class SecurityReplicationLeadingToEmailReplicationTest extends AbstractSe
final String password = "BertMyFriend";
final String validationBaseURL = null; //so that validation email is not sent
masterSecurityService.createSimpleUser(username, email, password, validationBaseURL);
masterSecurityService.createSimpleUser(username, email, password,
/* fullName */ null, /* company */ null, validationBaseURL);
masterSecurityService.sendMail(username, "subject", "body");
@@ -130,7 +131,8 @@ public class SecurityReplicationLeadingToEmailReplicationTest extends AbstractSe
final String password = "BertMyFriend";
final String validationBaseURL = null; //so that validation email is not sent
replicaSecurityService.createSimpleUser(username, email, password, validationBaseURL);
replicaSecurityService.createSimpleUser(username, email, password,
/* fullName */ null, /* company */ null, validationBaseURL);
replicaSecurityService.sendMail(username, "subject", "body");
@@ -1,113 +1,119 @@
package com.sap.sse.security.replication.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.sap.sse.common.mail.MailException;
import com.sap.sse.security.User;
import com.sap.sse.security.shared.UserManagementException;
public class SimpleSecurityReplicationTest extends AbstractSecurityReplicationTest {
@Test
public void testSimpleReplicationOfUserCreation() throws InterruptedException, UserManagementException, MailException, IllegalAccessException {
final String username = "Ernie";
final String email = "ernie@sesame-street.com";
final String password = "BertMyFriend";
final String validationBaseURL = "http://me.to.back.com";
assertNull(master.getUserByName(username));
User user = master.createSimpleUser(username, email, password, validationBaseURL);
assertNotNull(user);
assertSame(user, master.getUserByName(username));
assertTrue(master.checkPassword(username, password));
final String emailValidationSecret = user.getValidationSecret();
replicaReplicator.waitUntilQueueIsEmpty();
Thread.sleep(3000);
User replicatedErnie = replica.getUserByName(username);
assertNotNull(replicatedErnie);
assertEquals(username, replicatedErnie.getName());
assertEquals(email, replicatedErnie.getEmail());
assertTrue(replica.checkPassword(username, password));
assertEquals(emailValidationSecret, replicatedErnie.getValidationSecret());
}
@Test
public void testSimpleReplicationOfUserEmailChange() throws InterruptedException, UserManagementException, MailException, IllegalAccessException {
final String username = "Ernie";
final String email = "ernie@sesame-street.com";
final String newEmail = "ernie2@sesame-street.com";
final String password = "BertMyFriend";
final String validationBaseURL = "http://me.to.back.com";
final String fullName = "Ernie's Full Name";
final String company = "Ernie's Company";
User user = master.createSimpleUser(username, email, password, validationBaseURL);
user.setFullName(fullName);
user.setCompany(company);
final String emailValidationSecretAfterCreation = user.getValidationSecret();
master.updateSimpleUserEmail(username, newEmail, validationBaseURL);
final String emailValidationSecretAfterChangingEmail = user.getValidationSecret();
assertFalse(emailValidationSecretAfterChangingEmail.equals(emailValidationSecretAfterCreation));
assertEquals(newEmail, user.getEmail());
replicaReplicator.waitUntilQueueIsEmpty();
Thread.sleep(3000);
User replicatedErnie = replica.getUserByName(username);
assertNotNull(replicatedErnie);
assertEquals(username, replicatedErnie.getName());
assertEquals(newEmail, replicatedErnie.getEmail());
assertEquals(emailValidationSecretAfterChangingEmail, replicatedErnie.getValidationSecret());
assertEquals(fullName, replicatedErnie.getFullName());
assertEquals(company, replicatedErnie.getCompany());
}
@Test
public void testSimpleReplicationOfUserPasswordChange() throws InterruptedException, UserManagementException, MailException, IllegalAccessException {
final String username = "Ernie";
final String email = "ernie@sesame-street.com";
final String password = "BertMyFriend";
final String newPassword = "ErnieAndBert";
final String validationBaseURL = "http://me.to.back.com";
master.createSimpleUser(username, email, password, validationBaseURL);
master.updateSimpleUserPassword(username, newPassword);
assertTrue(master.checkPassword(username, newPassword));
replicaReplicator.waitUntilQueueIsEmpty();
Thread.sleep(3000);
User replicatedErnie = replica.getUserByName(username);
assertNotNull(replicatedErnie);
assertEquals(username, replicatedErnie.getName());
assertFalse(replica.checkPassword(username, password));
assertTrue(replica.checkPassword(username, newPassword));
}
@Test
public void testReplicationOfPasswordReset() throws InterruptedException, UserManagementException, MailException, IllegalAccessException {
final String username = "Ernie";
final String email = "ernie@sesame-street.com";
final String password = "BertMyFriend";
final String validationBaseURL = "http://me.to.back.com/validateemail";
final String passwordResetBaseURL = "http://me.to.back.com/passwordreset";
User user = master.createSimpleUser(username, email, password, validationBaseURL);
master.validateEmail(username, user.getValidationSecret());
assertTrue(user.isEmailValidated());
master.resetPassword(username, passwordResetBaseURL);
String passwordResetSecret = user.getPasswordResetSecret();
replicaReplicator.waitUntilQueueIsEmpty();
Thread.sleep(3000);
User replicatedErnie = replica.getUserByName(username);
assertNotNull(replicatedErnie);
assertTrue(replicatedErnie.isEmailValidated());
assertEquals(passwordResetSecret, replicatedErnie.getPasswordResetSecret());
}
}
package com.sap.sse.security.replication.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.sap.sse.common.mail.MailException;
import com.sap.sse.security.User;
import com.sap.sse.security.shared.UserManagementException;
public class SimpleSecurityReplicationTest extends AbstractSecurityReplicationTest {
@Test
public void testSimpleReplicationOfUserCreation() throws InterruptedException, UserManagementException, MailException, IllegalAccessException {
final String username = "Ernie";
final String email = "ernie@sesame-street.com";
final String password = "BertMyFriend";
final String fullName = "Ernie's Full Name";
final String company = "Ernie's Company";
final String validationBaseURL = "http://me.to.back.com";
assertNull(master.getUserByName(username));
User user = master.createSimpleUser(username, email, password, fullName, company, validationBaseURL);
assertNotNull(user);
assertSame(user, master.getUserByName(username));
assertTrue(master.checkPassword(username, password));
final String emailValidationSecret = user.getValidationSecret();
replicaReplicator.waitUntilQueueIsEmpty();
Thread.sleep(3000);
User replicatedErnie = replica.getUserByName(username);
assertNotNull(replicatedErnie);
assertEquals(username, replicatedErnie.getName());
assertEquals(email, replicatedErnie.getEmail());
assertTrue(replica.checkPassword(username, password));
assertEquals(emailValidationSecret, replicatedErnie.getValidationSecret());
assertEquals(fullName, replicatedErnie.getFullName());
assertEquals(company, replicatedErnie.getCompany());
}
@Test
public void testSimpleReplicationOfUserEmailChange() throws InterruptedException, UserManagementException, MailException, IllegalAccessException {
final String username = "Ernie";
final String email = "ernie@sesame-street.com";
final String newEmail = "ernie2@sesame-street.com";
final String password = "BertMyFriend";
final String validationBaseURL = "http://me.to.back.com";
final String fullName = "Ernie's Full Name";
final String company = "Ernie's Company";
User user = master.createSimpleUser(username, email, password, fullName, company, validationBaseURL);
user.setFullName(fullName);
user.setCompany(company);
final String emailValidationSecretAfterCreation = user.getValidationSecret();
master.updateSimpleUserEmail(username, newEmail, validationBaseURL);
final String emailValidationSecretAfterChangingEmail = user.getValidationSecret();
assertFalse(emailValidationSecretAfterChangingEmail.equals(emailValidationSecretAfterCreation));
assertEquals(newEmail, user.getEmail());
replicaReplicator.waitUntilQueueIsEmpty();
Thread.sleep(3000);
User replicatedErnie = replica.getUserByName(username);
assertNotNull(replicatedErnie);
assertEquals(username, replicatedErnie.getName());
assertEquals(newEmail, replicatedErnie.getEmail());
assertEquals(emailValidationSecretAfterChangingEmail, replicatedErnie.getValidationSecret());
assertEquals(fullName, replicatedErnie.getFullName());
assertEquals(company, replicatedErnie.getCompany());
}
@Test
public void testSimpleReplicationOfUserPasswordChange() throws InterruptedException, UserManagementException, MailException, IllegalAccessException {
final String username = "Ernie";
final String email = "ernie@sesame-street.com";
final String password = "BertMyFriend";
final String newPassword = "ErnieAndBert";
final String validationBaseURL = "http://me.to.back.com";
master.createSimpleUser(username, email, password,
/* fullName */ null, /* company */ null, validationBaseURL);
master.updateSimpleUserPassword(username, newPassword);
assertTrue(master.checkPassword(username, newPassword));
replicaReplicator.waitUntilQueueIsEmpty();
Thread.sleep(3000);
User replicatedErnie = replica.getUserByName(username);
assertNotNull(replicatedErnie);
assertEquals(username, replicatedErnie.getName());
assertFalse(replica.checkPassword(username, password));
assertTrue(replica.checkPassword(username, newPassword));
}
@Test
public void testReplicationOfPasswordReset() throws InterruptedException, UserManagementException, MailException, IllegalAccessException {
final String username = "Ernie";
final String email = "ernie@sesame-street.com";
final String password = "BertMyFriend";
final String validationBaseURL = "http://me.to.back.com/validateemail";
final String passwordResetBaseURL = "http://me.to.back.com/passwordreset";
User user = master.createSimpleUser(username, email, password,
/* fullName */ null, /* company */ null, validationBaseURL);
master.validateEmail(username, user.getValidationSecret());
assertTrue(user.isEmailValidated());
master.resetPassword(username, passwordResetBaseURL);
String passwordResetSecret = user.getPasswordResetSecret();
replicaReplicator.waitUntilQueueIsEmpty();
Thread.sleep(3000);
User replicatedErnie = replica.getUserByName(username);
assertNotNull(replicatedErnie);
assertTrue(replicatedErnie.isEmailValidated());
assertEquals(passwordResetSecret, replicatedErnie.getPasswordResetSecret());
}
}
@@ -21,7 +21,7 @@ public interface UserManagementService extends RemoteService {
SuccessInfo login(String username, String password);
UserDTO createSimpleUser(String name, String email, String password, String validationBaseURL) throws UserManagementException, MailException;
UserDTO createSimpleUser(String name, String email, String password, String fullName, String company, String validationBaseURL) throws UserManagementException, MailException;
/**
* Either <code>oldPassword</code> or <code>passwordResetSecret</code> need to be provided, or the current user needs to have
@@ -17,7 +17,7 @@ public interface UserManagementServiceAsync {
void logout(AsyncCallback<SuccessInfo> callback);
void createSimpleUser(String name, String email, String password, String validationBaseURL, AsyncCallback<UserDTO> callback);
void createSimpleUser(String name, String email, String password, String fullName, String company, String validationBaseURL, AsyncCallback<UserDTO> callback);
void updateSimpleUserPassword(String name, String oldPassword, String passwordResetSecret, String newPassword, AsyncCallback<Void> callback);
@@ -26,6 +26,7 @@ public class CreateUserDialog extends AbstractUserDialog {
userManagementService
.createSimpleUser(usernameEmailPassword.getUsername(),
usernameEmailPassword.getEmail(), usernameEmailPassword.getPassword(),
/* fullName */ null, /* company */ null,
EntryPointLinkFactory.createEmailValidationLink(new HashMap<String, String>()), new AsyncCallback<UserDTO>() {
@Override
public void onSuccess(UserDTO result) {
@@ -77,6 +77,7 @@ public class LoginPanel extends HorizontalPanel implements UserStatusEventHandle
@Override
public void ok(final UserData userData) {
userManagementService.createSimpleUser(userData.getUsername(), userData.getEmail(), userData.getPassword(),
/* fullName */ null, /* company */ null,
EntryPointLinkFactory.createEmailValidationLink(new HashMap<String, String>()),
new MarkedAsyncCallback<UserDTO>(new AsyncCallback<UserDTO>() {
@Override
@@ -77,6 +77,7 @@ public class RegisterView extends Composite {
@UiHandler("signUpButton")
void signUpButtonClicked(ClickEvent e) {
userManagementService.createSimpleUser(usernameTextBox.getText(), emailTextBox.getText(), passwordTextBox.getText(),
/* fullName */ null, /* company */ null,
EntryPointLinkFactory.createEmailValidationLink(new HashMap<String, String>()), new AsyncCallback<UserDTO>() {
@Override
public void onFailure(Throwable caught) {
@@ -124,10 +124,10 @@ public class UserManagementServiceImpl extends RemoteServiceServlet implements U
}
@Override
public UserDTO createSimpleUser(String name, String email, String password, String validationBaseURL) throws UserManagementException, MailException {
public UserDTO createSimpleUser(String name, String email, String password, String fullName, String company, String validationBaseURL) throws UserManagementException, MailException {
User u = null;
try {
u = getSecurityService().createSimpleUser(name, email, password, validationBaseURL);
u = getSecurityService().createSimpleUser(name, email, password, fullName, company, validationBaseURL);
} catch (UserManagementException e) {
logger.log(Level.SEVERE, "Error creating user "+name, e);
throw new UserManagementException(e.getMessage());
@@ -51,7 +51,7 @@ public interface SecurityService extends ReplicableWithObjectInputStream<Replica
/**
* @param validationBaseURL if <code>null</code>, no validation will be attempted
*/
User createSimpleUser(String username, String email, String password, String validationBaseURL) throws UserManagementException, MailException;
User createSimpleUser(String username, String email, String password, String fullName, String company, String validationBaseURL) throws UserManagementException, MailException;
void updateSimpleUserPassword(String name, String newPassword) throws UserManagementException;
@@ -191,7 +191,8 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat
if (Util.isEmpty(store.getUsers())) {
try {
logger.info("No users found, creating default user \"admin\" with password \"admin\"");
createSimpleUser("admin", "nobody@sapsailing.com", "admin", /* validationBaseURL */ null);
createSimpleUser("admin", "nobody@sapsailing.com", "admin",
/* fullName */ null, /* company */ null, /* validationBaseURL */ null);
addRoleForUser("admin", DefaultRoles.ADMIN.getRolename());
} catch (UserManagementException | MailException e) {
logger.log(Level.SEVERE, "Exception while creating default admin user", e);
@@ -322,8 +323,8 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat
}
@Override
public User createSimpleUser(final String username, final String email, String password,
final String validationBaseURL) throws UserManagementException, MailException {
public User createSimpleUser(final String username, final String email, String password, String fullName,
String company, final String validationBaseURL) throws UserManagementException, MailException {
if (store.getUserByName(username) != null) {
throw new UserManagementException(UserManagementException.USER_ALREADY_EXISTS);
}
@@ -337,6 +338,8 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat
String hashedPasswordBase64 = hashPassword(password, salt);
UsernamePasswordAccount upa = new UsernamePasswordAccount(username, hashedPasswordBase64, salt);
final User result = store.createUser(username, email, upa);
result.setFullName(fullName);
result.setCompany(company);
final String emailValidationSecret = result.startEmailValidation();
// don't replicate exception handling; replicate only the effect on the user store
apply(s->s.internalStoreUser(result));