1 18 19 package cowsultants.itracker.web.actions; 20 21 import java.io.*; 22 import java.rmi.*; 23 import java.util.*; 24 import javax.ejb.*; 25 import javax.rmi.*; 26 import javax.naming.*; 27 import javax.servlet.*; 28 import javax.servlet.http.*; 29 30 import org.apache.struts.action.*; 31 import org.apache.struts.util.*; 32 33 import cowsultants.itracker.ejb.client.exceptions.*; 34 import cowsultants.itracker.ejb.client.interfaces.*; 35 import cowsultants.itracker.ejb.client.models.*; 36 import cowsultants.itracker.ejb.client.util.*; 37 import cowsultants.itracker.web.forms.*; 38 import cowsultants.itracker.web.util.*; 39 40 41 public class SelfRegisterAction extends ITrackerAction { 42 43 public SelfRegisterAction() { 44 } 45 46 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 47 ActionErrors errors = new ActionErrors(); 48 49 Logger.logDebug("Checking transactional control token."); 50 if(! isTokenValid(request)) { 51 return mapping.findForward("login"); 52 } 53 resetToken(request); 54 55 try { 56 InitialContext ic = new InitialContext(); 57 58 Object scRef = ic.lookup("java:comp/env/" + SystemConfiguration.JNDI_NAME); 59 SystemConfigurationHome scHome = (SystemConfigurationHome) PortableRemoteObject.narrow(scRef, SystemConfigurationHome.class); 60 SystemConfiguration sc = scHome.create(); 61 62 boolean allowSelfRegister = sc.getBooleanProperty("allow_self_register", false); 63 64 if(! allowSelfRegister) { 65 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.notenabled")); 66 } else { 67 UserForm regForm = (UserForm) form; 68 69 UserModel user = new UserModel(regForm.getLogin(), UserUtilities.encryptPassword(regForm.getPassword()), 70 regForm.getFirstName(), regForm.getLastName(), regForm.getEmail(), 71 UserUtilities.REGISTRATION_TYPE_SELF, false); 72 73 if(! user.hasRequiredData()) { 74 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.missingfields")); 75 } else { 76 Object uhRef = ic.lookup("java:comp/env/" + UserHandler.JNDI_NAME); 77 UserHandlerHome uhHome = (UserHandlerHome) PortableRemoteObject.narrow(uhRef, UserHandlerHome.class); 78 UserHandler uh = uhHome.create(); 79 80 try { 81 if(uh.allowRegistration(user, regForm.getPassword(), AuthenticationConstants.AUTH_TYPE_PASSWORD_PLAIN, AuthenticationConstants.REQ_SOURCE_WEB)) { 82 user = uh.createUser(user); 83 uh.sendNotification(user.getLogin(), user.getEmail(), getBaseURL(request)); 84 } else { 85 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.register.unauthorized")); 86 } 87 } catch(UserException ue) { 88 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.existinglogin")); 89 } 90 } 91 } 92 } catch(Exception e) { 93 Logger.logInfo("Error during self registration. " + e.getMessage()); 94 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.register.system")); 95 } 96 97 if(! errors.isEmpty()) { 98 saveErrors(request, errors); 99 saveToken(request); 100 return mapping.getInputForward(); 101 } 102 103 return mapping.findForward("login"); 104 } 105 106 } 107 | Popular Tags |