KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cowsultants > itracker > web > actions > SelfRegisterAction


1 /*
2  * This software was designed and created by Jason Carroll.
3  * Copyright (c) 2002, 2003, 2004 Jason Carroll.
4  * The author can be reached at jcarroll@cowsultants.com
5  * ITracker website: http://www.cowsultants.com
6  * ITracker forums: http://www.cowsultants.com/phpBB/index.php
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it only under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  */

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 JavaDoc 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 JavaDoc 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 JavaDoc 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