1 package com.dotmarketing.cms.registration.action; 2 3 import java.util.Date ; 4 import java.util.List ; 5 6 import javax.servlet.http.HttpServletRequest ; 7 import javax.servlet.http.HttpServletResponse ; 8 9 import org.apache.commons.beanutils.BeanUtils; 10 import org.apache.commons.logging.LogFactory; 11 import org.apache.struts.Globals; 12 import org.apache.struts.action.ActionErrors; 13 import org.apache.struts.action.ActionForm; 14 import org.apache.struts.action.ActionForward; 15 import org.apache.struts.action.ActionMapping; 16 import org.apache.struts.action.ActionMessage; 17 import org.apache.struts.action.ActionMessages; 18 import org.apache.struts.actions.DispatchAction; 19 20 import com.dotmarketing.beans.Host; 21 import com.dotmarketing.beans.UserProxy; 22 import com.dotmarketing.cms.factories.PublicAddressFactory; 23 import com.dotmarketing.cms.factories.PublicCompanyFactory; 24 import com.dotmarketing.cms.factories.PublicEncryptionFactory; 25 import com.dotmarketing.cms.factories.PublicRoleFactory; 26 import com.dotmarketing.cms.factories.PublicUserFactory; 27 import com.dotmarketing.cms.login.factories.LoginFactory; 28 import com.dotmarketing.factories.EmailFactory; 29 import com.dotmarketing.factories.HostFactory; 30 import com.dotmarketing.factories.InodeFactory; 31 import com.dotmarketing.factories.UserProxyFactory; 32 import com.dotmarketing.portlets.categories.model.Category; 33 import com.dotmarketing.util.Config; 34 import com.dotmarketing.util.Logger; 35 import com.dotmarketing.util.UtilMethods; 36 import com.dotmarketing.util.WebKeys; 37 import com.liferay.portal.ejb.RoleLocalManagerUtil; 38 import com.liferay.portal.ejb.UserLocalManagerUtil; 39 import com.liferay.portal.model.Address; 40 import com.liferay.portal.model.Role; 41 import com.liferay.portal.model.User; 42 import com.dotmarketing.cms.registration.struts.RegistrationForm; 45 import com.dotmarketing.portlets.organization.factories.OrganizationFactory; 46 import com.dotmarketing.portlets.organization.model.Organization; 47 48 public class RegisterAction extends DispatchAction 49 { 50 @SuppressWarnings ("unchecked") 51 public ActionForward unspecified(ActionMapping mapping, ActionForm lf, 52 HttpServletRequest request, HttpServletResponse response) 53 throws Exception 54 { 55 RegistrationForm registrationForm = (RegistrationForm) lf; 56 57 long userProxyInode = registrationForm.getUserProxyInode(); 59 if (request.getAttribute("userProxyInode") != null) { 60 userProxyInode = (Long ) request.getAttribute("userProxyInode"); 61 } 62 UserProxy userProxy = UserProxyFactory.getUserProxy(userProxyInode); 63 String userID = userProxy.getUserId(); 64 65 68 User user = retrieveMember(userID,lf,request,response); 70 71 73 75 Address address = retrieveAddress(userID,lf,request,response); 76 Organization organization = (Organization) InodeFactory.getParentOfClass(userProxy,Organization.class); 77 78 BeanUtils.copyProperties(registrationForm,user); 80 81 BeanUtils.copyProperties(registrationForm, userProxy); 83 84 BeanUtils.copyProperties(registrationForm,address); 85 registrationForm.setOrganizationInodeAux(organization.getInode()); 86 registrationForm.setOrganizationTitle(organization.getTitle()); 87 registrationForm.setUserProxyInode(userProxy.getInode()); 88 if (userProxyInode > 0 && organization.getInode() == 0) { 89 registrationForm.setNoOrganization(true); 90 } 91 92 if (userProxyInode > 0) { 94 String [] selectCatsString = new String [0]; 95 List <Category> categories = InodeFactory.getParentsOfClass(userProxy,Category.class); 96 selectCatsString = new String [categories.size()]; 97 for(int i = 0;i < categories.size();i++) 98 { 99 selectCatsString[i] = Long.toString(categories.get(i).getInode()); 100 } 101 registrationForm.setCategory(selectCatsString); 102 103 registrationForm.setPassword("XXXXXXXX"); 104 registrationForm.setVerifyPassword("XXXXXXXX"); 105 registrationForm.setPassChanged(false); 106 } else { 107 registrationForm.setPassChanged(true); 108 registrationForm.setCategory(new String [0]); 109 } 110 111 if (request.getAttribute("from") != null) 113 registrationForm.setFrom((String )request.getAttribute("from")); 114 if (request.getAttribute("referrer") != null) 115 { 116 registrationForm.setReferrer((String )request.getAttribute("referrer")); 117 } 118 else 119 { 120 registrationForm.setReferrer("/home/index.dot"); 121 } 122 123 124 return mapping.findForward("open"); 125 } 126 127 136 public ActionForward findMe(ActionMapping mapping, ActionForm lf, HttpServletRequest request,HttpServletResponse response) throws Exception 137 { 138 RegistrationForm registrationForm = (RegistrationForm) lf; 139 140 if (LoginFactory.doLogin(registrationForm.getFindMeEmailAddress(), registrationForm.getFindMePassword(), false, request, response)) { 141 User user = PublicUserFactory.getUserByEmail(registrationForm.getFindMeEmailAddress()); 142 UserProxy proxy = UserProxyFactory.getUserProxy(user); 143 registrationForm.setUserProxyInode(proxy.getInode()); 144 if (request.getParameter("from") != null) 145 { 146 request.setAttribute("from",request.getParameter("from")); 147 } 148 if (request.getParameter("referrer") != null) 149 { 150 request.setAttribute("referrer",request.getParameter("referrer")); 151 } 152 return unspecified (mapping, lf, request, response); 153 } 154 155 ActionErrors errors = new ActionErrors(); 156 errors.add(Globals.MESSAGE_KEY, new ActionMessage("error.user.not.found")); 157 saveMessages(request, errors); 158 registrationForm.setFindMePassword(""); 159 160 return mapping.findForward("open"); 161 } 162 163 @SuppressWarnings ("unchecked") 164 public ActionForward saveRegistration(ActionMapping mapping, ActionForm lf, HttpServletRequest request, 165 HttpServletResponse response) throws Exception { 166 RegistrationForm registrationForm = (RegistrationForm) lf; 168 ActionErrors ae; 171 ae = registrationForm.validateRegistry(request); 172 173 if(registrationForm.getUserProxyInode() == 0) 174 { 175 if(!validateUniqueEmail(registrationForm.getEmailAddress())) 176 { 177 ae.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.forgotPasswordClickHere","javascript:forgotPassword()")); 178 } 181 } 182 183 if ((ae != null) && (ae.size() > 0)) 184 { 185 saveMessages(request, ae); 186 ActionForward af = mapping.findForward("fail"); 187 return af; 188 } 189 191 long userProxyInode = registrationForm.getUserProxyInode(); 196 UserProxy userProxy = UserProxyFactory.getUserProxy(userProxyInode); 199 String userID = userProxy.getUserId(); 200 User user = retrieveMember(userID,lf,request,response); 201 String lastPassword = user.getPassword(); 202 203 205 Address address = retrieveAddress(userID,lf,request,response); 206 207 BeanUtils.copyProperties(user,registrationForm); 209 210 BeanUtils.copyProperties(userProxy, registrationForm); 212 213 BeanUtils.copyProperties(address,registrationForm); 214 215 user.setPasswordEncrypted(true); 217 String newEncryptedPassword = PublicEncryptionFactory.digestString(user.getPassword()); 218 219 if (registrationForm.isPassChanged()) { 220 user.setPassword(newEncryptedPassword); 221 } else { 222 user.setPassword(lastPassword); 223 } 224 225 boolean isNew = user.isNew(); 226 user.setNew(false); 227 saveMember(user); 228 229 if (isNew) 231 { 232 String companyId = PublicCompanyFactory.getDefaultCompanyId(); 233 String defaultRole = Config.getStringProperty("CMS_VIEWER_ROLE"); 234 235 Role role = RoleLocalManagerUtil.getRoleByName(companyId,defaultRole); 236 PublicRoleFactory.addRoleToUser(role.getRoleId(),user); 237 } 238 239 saveAddress(user,address); 240 userProxy.setUserId(user.getUserId()); 242 UserProxyFactory.saveUserProxy(userProxy); 243 245 247 249 251 registrationForm.setUserProxyInode(userProxy.getInode()); 253 254 if (userProxy.getInode() != 0) 256 { 257 List <Category> categories = InodeFactory.getParentsOfClass(userProxy,Category.class); 258 for(int i = 0;i < categories.size();i++) 259 { 260 categories.get(i).deleteChild(userProxy); 261 } 262 } 263 264 String [] arr = registrationForm.getCategory(); 266 if (arr != null) 267 { 268 for (int i = 0; i < arr.length; i++) 269 { 270 Category node = (Category) InodeFactory.getInode(arr[i],Category.class); 271 node.addChild(userProxy); 272 } 273 } 274 275 if (userProxy.getInode() != 0) 277 { 278 List <Organization> organizations = InodeFactory.getParentsOfClass(userProxy,Organization.class); 279 for(int i = 0;i < organizations.size();i++) 280 { 281 organizations.get(i).deleteChild(userProxy); 282 } 283 } 284 285 286 if (!registrationForm.isNoOrganization()) 288 { 289 long organizationInode = registrationForm.getOrganizationInodeAux(); 290 if (organizationInode != 0) 291 { 292 Organization organization = (Organization) OrganizationFactory.getOrganization(organizationInode); 293 organization.addChild(userProxy); 294 } 295 } 296 297 298 confirm(mapping,lf,request,response); 300 301 if (isNew) 303 LoginFactory.doLogin(registrationForm.getEmailAddress(), registrationForm.getPassword(), false, request, response); 304 305 ae.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("registration.confirmation")); 307 saveMessages(request, ae); 308 return mapping.findForward("confirmation"); 309 } 310 311 public void confirm(ActionMapping mapping, ActionForm lf, HttpServletRequest request,HttpServletResponse response) 312 throws Exception 313 { 314 RegistrationForm registrationForm = (RegistrationForm) lf; 315 long organizationInode = registrationForm.getOrganizationInodeAux(); 316 Organization organization = OrganizationFactory.getOrganization(organizationInode); 317 String title = organization.getTitle(); 319 String street1 = organization.getStreet1(); 320 String street2 = organization.getStreet2(); 321 String city = organization.getCity(); 322 String state = organization.getState(); 323 String zip = organization.getZip(); 324 String phone = organization.getPhone(); 325 String fax = organization.getFax(); 326 organizationInode = organization.getInode(); 327 registrationForm.setOrganizationTitle(title); 329 registrationForm.setOrganizationStreet1(street1); 330 registrationForm.setOrganizationStreet2(street2); 331 registrationForm.setOrganizationCity(city); 332 registrationForm.setOrganizationState(state); 333 registrationForm.setOrganizationZip(zip); 334 registrationForm.setOrganizationPhone(phone); 335 registrationForm.setOrganizationFax(fax); 336 registrationForm.setOrganizationInodeAux(organizationInode); 337 } 338 339 public void cancel(ActionMapping mapping, ActionForm lf, HttpServletRequest request,HttpServletResponse response) 340 throws Exception 341 { 342 345 String referrer = "/home/index.dot"; 346 response.sendRedirect(referrer); 347 } 348 349 public void finish(ActionMapping mapping, ActionForm lf, HttpServletRequest request,HttpServletResponse response) 350 throws Exception 351 { 352 RegistrationForm registrationForm = (RegistrationForm) lf; 353 String referrer = ""; 354 if (request.getSession().getAttribute(WebKeys.REDIRECT_AFTER_LOGIN) != null) 355 { 356 String redir = (String ) request.getSession().getAttribute(WebKeys.REDIRECT_AFTER_LOGIN); 357 request.getSession().removeAttribute(WebKeys.REDIRECT_AFTER_LOGIN); 358 LogFactory.getLog(this.getClass()).info("redirecting after account creation: " + redir); 359 referrer = redir; 360 } 361 else 362 { 363 referrer = registrationForm.getReferrer(); 364 } 365 366 response.sendRedirect(referrer); 367 } 368 369 private User retrieveMember(String userId,ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception 370 { 371 RegistrationForm registrationForm = (RegistrationForm) form; 372 String companyId = PublicCompanyFactory.getDefaultCompanyId(); 373 User member = new User(); 374 375 if (UtilMethods.isSet(userId)) 376 { 377 member = UserLocalManagerUtil.getUserById(companyId, userId); 378 } 379 else 380 { 381 member = PublicUserFactory.getInstance(); 382 member.setCompanyId(companyId); 383 member.setActive(true); 384 member.setSkinId("01"); 385 member.setCreateDate(new Date ()); 386 member.setGreeting("Welcome, "+ registrationForm.getFirstName()+" "+ registrationForm.getLastName()+"!"); 387 member.setMiddleName(""); 388 member.setNickName(""); 389 member.setNew(true); 390 member.setLanguageId("en_US"); 391 member.setTimeZoneId("US/Eastern"); 392 member.setResolution("1024x768"); 393 member.setRefreshRate("900"); 394 member.setLayoutIds(""); 395 } 396 return member; 397 } 398 399 private boolean validateUniqueEmail(String emailAddress) 400 { 401 String companyId = PublicCompanyFactory.getDefaultCompanyId(); 402 boolean returnValue = true; 403 User member = null; 404 if (UtilMethods.isSet(emailAddress)) 405 { 406 try 407 { 408 member = UserLocalManagerUtil.getUserByEmailAddress(companyId,emailAddress); 409 } 410 catch(Exception ex) 411 { 412 Logger.debug(this,ex.toString()); 413 } 414 } 415 if(!(member == null)) 416 { 417 returnValue = false; 418 } 419 return returnValue; 420 } 421 422 private void saveMember(User user) throws Exception 423 { 424 PublicUserFactory.save(user); 425 } 426 427 private Address retrieveAddress(String userID,ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception 428 { 429 String companyId = PublicCompanyFactory.getDefaultCompanyId(); 430 431 Address address = null; 432 if (UtilMethods.isSet(userID)) 433 { 434 address = (Address) PublicAddressFactory.getAddressesByUserId(userID).get(0); 435 } 436 else 437 { 438 address = PublicAddressFactory.getInstance(); 439 address.setCompanyId(companyId); 440 } 441 return address; 442 } 443 444 private void saveAddress(User user,Address address) 445 { 446 address.setUserId(user.getUserId()); 447 PublicAddressFactory.save(address); 448 } 449 450 public ActionForward forgotPassword(ActionMapping mapping, ActionForm lf, HttpServletRequest request,HttpServletResponse response) throws Exception 451 { 452 RegistrationForm form = (RegistrationForm) lf; 453 ActionErrors aes = form.validate(mapping, request); 455 456 if(aes != null && aes.size() > 0){ 457 saveMessages(request, aes); 458 return mapping.findForward("fail"); 459 } 460 User user = PublicUserFactory.getUserByEmail(form.getEmailAddress()); 461 if(user.isNew()){ 462 aes= new ActionErrors(); 463 aes.add(Globals.ERROR_KEY, new ActionMessage("error.forgotPasswordUserNotFound")); 464 saveMessages(request, aes); 465 return mapping.findForward("fail"); 466 } 467 String pass = PublicEncryptionFactory.getRandomPassword(); 468 user.setPassword(PublicEncryptionFactory.digestString(pass)); 469 PublicUserFactory.save(user); 470 Host host = HostFactory.getCurrentHost(request); 471 EmailFactory.sendForgotPassword(user, pass, host.getInode()); 472 473 aes = new ActionErrors(); 474 aes.add(Globals.ERROR_KEY, new ActionMessage("error.forgotPasswordMailSend")); 475 saveMessages(request, aes); 476 477 ActionForward af = mapping.findForward("fail"); 478 return af; 479 } 480 481 } | Popular Tags |