KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > blandware > atleap > webapp > action > core > user > CreateUserAction


1 /*
2  * Copyright 2004 Blandware (http://www.blandware.com)
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package com.blandware.atleap.webapp.action.core.user;
17
18 import com.blandware.atleap.common.Constants;
19 import com.blandware.atleap.common.util.StringUtil;
20 import com.blandware.atleap.model.core.Role;
21 import com.blandware.atleap.model.core.User;
22 import com.blandware.atleap.model.core.Group;
23 import com.blandware.atleap.service.core.UserManager;
24 import com.blandware.atleap.service.core.GroupManager;
25 import com.blandware.atleap.service.exception.BeanAlreadyExistsException;
26 import com.blandware.atleap.webapp.action.core.BaseAction;
27 import com.blandware.atleap.webapp.form.UserForm;
28 import com.blandware.atleap.webapp.util.core.WebappConstants;
29 import com.blandware.atleap.webapp.util.core.WebappUtil;
30 import org.apache.struts.action.ActionForm;
31 import org.apache.struts.action.ActionForward;
32 import org.apache.struts.action.ActionMapping;
33 import org.apache.struts.action.ActionMessage;
34 import org.apache.struts.action.ActionMessages;
35
36 import javax.servlet.http.HttpServletRequest JavaDoc;
37 import javax.servlet.http.HttpServletResponse JavaDoc;
38 import java.util.List JavaDoc;
39
40 /**
41  * <p>Creates new user
42  * </p>
43  * <p><a HREF="CreateUserAction.java.htm"><i>View Source</i></a></p>
44  * <p/>
45  *
46  * @author Sergey Zubtcovskii <a HREF="mailto:sergey.zubtcovskii@blandware.com">&lt;sergey.zubtcovskii@blandware.com&gt;</a>
47  * @version $Revision: 1.24 $ $Date: 2006/03/16 11:09:41 $
48  * @struts.action path="/core/user/create"
49  * name="userForm"
50  * scope="request"
51  * input="inputForward"
52  * validate="true"
53  * roles="core-user-create"
54  * @struts.action-forward name="inputForward"
55  * path=".core.user.create"
56  * @struts.action-forward name="callAssignRolesAndGroups"
57  * path="/core/user/callAssignRolesAndGroups.do"
58  * redirect="false"
59  * @struts.action-forward name="listUsers"
60  * path="/core/user/list.do"
61  * redirect="true"
62  * @struts.action-forward name="unsatisfiable"
63  * path="/core/user/list.do"
64  */

65 public final class CreateUserAction extends BaseAction {
66     /**
67      * @param mapping The ActionMapping used to select this instance
68      * @param form The optional ActionForm bean for this request (if any)
69      * @param request The HTTP request we are proceeding
70      * @param response The HTTP response we are creating
71      * @return an ActionForward instance describing where and how
72      * control should be forwarded, or null if response
73      * has already been completed
74      */

75     public ActionForward execute(ActionMapping mapping, ActionForm form,
76                                  HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
77
78         if ( !isCancelled(request) ) {
79
80             UserForm userForm = (UserForm) form;
81             User user = new User();
82             WebappUtil.copyProperties(user, userForm, request);
83             user.setEnabled(Boolean.TRUE);
84
85             GroupManager groupManager = (GroupManager) getBean(Constants.GROUP_MANAGER_BEAN);
86             Group usersGroup = groupManager.retrieveGroup(Constants.USERS_GROUP);
87             usersGroup.addUser(user);
88             List JavaDoc usersGroupRoles = usersGroup.getRoles();
89             for (int i = 0; i < usersGroupRoles.size(); i++) {
90                 Role role = (Role) usersGroupRoles.get(i);
91                 user.addRole(role, usersGroup);
92             }
93
94             boolean encryptPassword = ((Boolean JavaDoc) getConfiguration().get(Constants.ENCRYPT_PASSWORD)).booleanValue();
95             String JavaDoc encAlgorithm = (String JavaDoc) getConfiguration().get(Constants.ENC_ALGORITHM);
96             if ( encryptPassword ) {
97                 user.setPassword(StringUtil.encodePassword(userForm.getPassword(), encAlgorithm));
98             }
99             UserManager userManager = (UserManager) getBean(Constants.USER_MANAGER_BEAN);
100             try {
101                 userManager.createUser(user);
102             } catch ( BeanAlreadyExistsException e ) {
103                 // user already exists
104
ActionMessages errors = new ActionMessages();
105                 errors.add("userAlreadyExists", new ActionMessage("core.user.errors.alreadyExists"));
106                 saveErrors(request, errors);
107                 saveToken(request);
108                 return mapping.getInputForward();
109             }
110
111             if ( request.isUserInRole("core-user-assignRolesAndGroups") ) {
112                 request.setAttribute(WebappConstants.USER_NAME_KEY, user.getName());
113                 return mapping.findForward("callAssignRolesAndGroups");
114             } else {
115                 return mapping.findForward("admin");
116             }
117         } else {
118             if ( request.isUserInRole("core-user-list") ) {
119                 return mapping.findForward("listUsers");
120             } else {
121                 return mapping.findForward("admin");
122             }
123         }
124     }
125 }
Popular Tags