1 package org.appfuse.webapp.action; 2 3 import java.io.Serializable ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 import java.util.Map ; 7 8 import javax.servlet.http.HttpServletRequest ; 9 10 import org.acegisecurity.Authentication; 11 import org.acegisecurity.AuthenticationTrustResolver; 12 import org.acegisecurity.AuthenticationTrustResolverImpl; 13 import org.acegisecurity.context.SecurityContext; 14 import org.acegisecurity.context.SecurityContextHolder; 15 import org.apache.commons.lang.StringUtils; 16 import org.appfuse.Constants; 17 import org.appfuse.model.Role; 18 import org.appfuse.model.User; 19 import org.appfuse.service.RoleManager; 20 import org.appfuse.service.UserExistsException; 21 import org.appfuse.util.ConvertUtil; 22 import org.appfuse.util.StringUtil; 23 import org.appfuse.webapp.util.RequestUtil; 24 25 30 public class UserForm extends BasePage implements Serializable { 31 private static final long serialVersionUID = -1141119853856863204L; 32 private RoleManager roleManager; 33 private String username; 34 private User user = new User(); 35 private Map availableRoles; 36 private String [] userRoles; 37 38 public void setUsername(String username) { 39 this.username = username; 40 } 41 42 public String getUsername() { 43 return username; 44 } 45 46 public User getUser() { 47 return user; 48 } 49 50 public void setUser(User user) { 51 this.user = user; 52 } 53 54 public void setRoleManager(RoleManager roleManager) { 55 this.roleManager = roleManager; 56 } 57 58 public String cancel() { 59 if (log.isDebugEnabled()) { 60 log.debug("Entering 'cancel' method"); 61 } 62 63 if (!StringUtils.equals(getParameter("from"), "list")) { 64 return "mainMenu"; 65 } else { 66 return "cancel"; 67 } 68 } 69 70 public String edit() { 71 HttpServletRequest request = getRequest(); 72 73 if (username != null) { 75 user = userManager.getUserByUsername(username); 77 } else if (username == null) { 78 user = userManager.getUserByUsername(request.getRemoteUser()); 79 } else { 80 user = new User(); 81 user.addRole(new Role(Constants.USER_ROLE)); 82 } 83 84 if (user.getUsername() != null) { 85 user.setConfirmPassword(user.getPassword()); 86 87 log.debug("checking for remember me login..."); 89 90 AuthenticationTrustResolver resolver = new AuthenticationTrustResolverImpl(); 91 SecurityContext ctx = SecurityContextHolder.getContext(); 92 93 if (ctx != null) { 94 Authentication auth = ctx.getAuthentication(); 95 96 if (resolver.isRememberMe(auth)) { 97 getSession().setAttribute("cookieLogin", "true"); 98 log.trace("User '" + user.getUsername() + "' logged in with cookie"); 99 addMessage("userProfile.cookieLogin"); 100 } 101 } 102 } 103 104 return "editProfile"; 105 } 106 107 public String save() { 108 String password = user.getPassword(); 109 String originalPassword = getParameter("userForm:originalPassword"); 110 111 Boolean encrypt = (Boolean ) getConfiguration().get(Constants.ENCRYPT_PASSWORD); 112 boolean doEncrypt = (encrypt != null) ? encrypt.booleanValue() : false; 113 114 if (doEncrypt && (StringUtils.equals(getParameter("encryptPass"), "true") || 115 !StringUtils.equals(password, originalPassword))) { 116 String algorithm = (String ) getConfiguration().get(Constants.ENC_ALGORITHM); 117 118 if (algorithm == null) { log.debug("assuming testcase, setting algorigthm to 'SHA'"); 120 algorithm = "SHA"; 121 } 122 123 user.setPassword(StringUtil.encodePassword(password, algorithm)); 124 } 125 126 setUserRoles(getRequest().getParameterValues("userForm:userRoles")); 129 130 for (int i = 0; (userRoles != null) && (i < userRoles.length); i++) { 131 String roleName = userRoles[i]; 132 user.addRole(roleManager.getRole(roleName)); 133 } 134 135 Integer originalVersion = user.getVersion(); 136 137 try { 138 userManager.saveUser(user); 139 } catch (UserExistsException e) { 140 log.warn(e.getMessage()); 141 addError("errors.existing.user", 142 new Object [] { user.getUsername(), user.getEmail() }); 143 144 user.setVersion(originalVersion); 146 return "editProfile"; 147 } 148 149 if (!StringUtils.equals(getParameter("from"), "list")) { 150 addMessage("user.saved"); 152 153 return "mainMenu"; 155 } else { 156 if ("".equals(getParameter("userForm:version"))) { 158 addMessage("user.added", user.getFullName()); 159 160 sendUserMessage(user, getText("newuser.email.message", 161 user.getFullName()), RequestUtil.getAppURL(getRequest())); 162 163 return "list"; } else { 165 addMessage("user.updated.byAdmin", user.getFullName()); 166 return "editProfile"; } 168 } 169 } 170 171 public String delete() { 172 userManager.removeUser(getUser().getId().toString()); 173 addMessage("user.deleted", getUser().getFullName()); 174 175 return "list"; 176 } 177 178 182 public String getFrom() { 183 if ((username != null) || (getParameter("editUser:add") != null) || 184 ("list".equals(getParameter("from")))) { 185 return "list"; 186 } 187 188 return ""; 189 } 190 191 public Map getAvailableRoles() { 193 if (availableRoles == null) { 194 List roles = 195 (List ) getServletContext().getAttribute(Constants.AVAILABLE_ROLES); 196 availableRoles = ConvertUtil.convertListToMap(roles); 197 } 198 199 return availableRoles; 200 } 201 202 public String [] getUserRoles() { 203 userRoles = new String [user.getRoles().size()]; 204 205 int i = 0; 206 207 if (userRoles.length > 0) { 208 for (Iterator it = user.getRoles().iterator(); it.hasNext();) { 209 Role role = (Role) it.next(); 210 211 userRoles[i] = role.getName(); 212 i++; 213 } 214 } 215 216 return userRoles; 217 } 218 219 public void setUserRoles(String [] userRoles) { 220 this.userRoles = userRoles; 221 } 222 223 public String getCountry() { 224 return getUser().getAddress().getCountry(); 225 } 226 227 public void setCountry(String country) { 230 getUser().getAddress().setCountry(country); 231 } 232 } 233 | Popular Tags |