throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'onSubmit' method...");
}
User user = (User) command;
Locale locale = request.getLocale();
if (request.getParameter("delete") != null) {
getUserManager().removeUser(user.getId().toString());
saveMessage(request, getText("user.deleted", user.getFullName(), locale));
return new ModelAndView(getSuccessView());
} else {
Boolean encrypt = (Boolean) getConfiguration().get(Constants.ENCRYPT_PASSWORD);
if (StringUtils.equals(request.getParameter("encryptPass"), "true")
&& (encrypt != null && encrypt.booleanValue())) {
String algorithm = (String) getConfiguration().get(Constants.ENC_ALGORITHM);
if (algorithm == null) { // should only happen for test case
if (log.isDebugEnabled()) {
log.debug("assuming testcase, setting algorithm to 'SHA'");
}
algorithm = "SHA";
}
user.setPassword(StringUtil.encodePassword(user.getPassword(), algorithm));
}
String userRole = request.getParameter("userRoles");
if (userRole != null) {
// for some reason, Spring seems to hang on to the roles in
// the User object, even though isSessionForm() == false
user.getRoles().clear();
user.addRole(roleManager.getRole(userRole));
// //filling extra roles depending on the current role
// if(user.getRoles().toArray().length>0){
// Role role=(Role)user.getRoles().toArray()[0];
//
// if("admin".equals(role.getName())){
// user.addRole(roleManager.getRole("admin"));
// }
// if("user".equals(role.getName())){
// user.addRole(roleManager.getRole("user"));
// }
//
// }
}
Integer originalVersion = user.getVersion();
try {
getUserManager().saveUser(user);
} catch (UserExistsException e) {
log.warn(e.getMessage());
errors.rejectValue("username", "errors.existing.user",
new Object[]{
user.getUsername(), user.getEmail()
}, "duplicate user");
// redisplay the unencrypted passwords
user.setPassword(user.getConfirmPassword());
// reset the version # to what was passed in
user.setVersion(originalVersion);
return showForm(request, response, errors);
}
if (!StringUtils.equals(request.getParameter("from"), "list")) {
saveMessage(request, getText("user.saved", user.getFullName(), locale));
// return to main Menu
return new ModelAndView(new RedirectView("mainMenu.html"));
} else {
if (StringUtils.isBlank(request.getParameter("version"))) {
saveMessage(request, getText("user.added", user.getFullName(), locale));
// Send an account information e-mail
message.setSubject(getText("signup.email.subject", locale));
sendUserMessage(user, getText("newuser.email.message", user.getFullName(), locale),
RequestUtil.getAppURL(request));
return new ModelAndView("redirect:users.html");
} else {
saveMessage(request, getText("user.updated.byAdmin", user.getFullName(), locale));
}
}
}
return new ModelAndView("redirect:users.html");