Update of /cvsroot/itracker/itracker/src/cowsultants/itracker/web/actions/admin/user In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2817/src/cowsultants/itracker/web/actions/admin/user Added Files: Tag: itrackerhibernate UnlockUserAction.java LockUserAction.java EditUserFormAction.java EditUserAction.java Log Message: Modularizing the Struts actions to be able to get a modular system that is easier to read for everybody. --- NEW FILE: EditUserAction.java --- /* * This software was designed and created by Jason Carroll. * Copyright (c) 2002, 2003, 2004 Jason Carroll. * The author can be reached at jca...@co... * ITracker website: http://www.cowsultants.com * ITracker forums: http://www.cowsultants.com/phpBB/index.php * * This program is free software; you can redistribute it and/or modify * it only under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ package cowsultants.itracker.web.actions.admin.user; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Vector; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import cowsultants.itracker.ejb.client.exceptions.UserException; import cowsultants.itracker.ejb.client.interfaces.UserHandler; import cowsultants.itracker.ejb.client.models.PermissionModel; import cowsultants.itracker.ejb.client.models.UserModel; import cowsultants.itracker.ejb.client.util.Logger; import cowsultants.itracker.ejb.client.util.UserUtilities; import cowsultants.itracker.web.actions.notyetsorted.ITrackerAction; import cowsultants.itracker.web.forms.UserForm; import cowsultants.itracker.web.util.Constants; import cowsultants.itracker.web.util.SessionManager; public class EditUserAction extends ITrackerAction { public EditUserAction() { } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ActionErrors errors = new ActionErrors(); if(! isLoggedIn(request, response)) { return mapping.findForward("login"); } if(! hasPermission(UserUtilities.PERMISSION_USER_ADMIN, request, response)) { return mapping.findForward("unauthorized"); } if(! isTokenValid(request)) { Logger.logDebug("Invalid request token while editing component."); return mapping.findForward("listusers"); } resetToken(request); UserForm userForm = (UserForm) form; if(userForm == null) { return mapping.findForward("listusers"); } HttpSession session = request.getSession(true); try { UserHandler uh = getITrackerServices().getUserHandler(); UserModel editUser = new UserModel(); editUser.setId(userForm.getId()); editUser.setLogin(userForm.getLogin()); editUser.setFirstName(userForm.getFirstName()); editUser.setLastName(userForm.getLastName()); editUser.setEmail(userForm.getEmail()); editUser.setSuperUser(userForm.isSuperUser()); String previousLogin = editUser.getLogin(); try { if("create".equals(userForm.getAction())) { if(! uh.allowProfileCreation(editUser, null, UserUtilities.AUTH_TYPE_UNKNOWN, UserUtilities.REQ_SOURCE_WEB)) { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.noprofilecreates")); saveErrors(request, errors); return mapping.findForward("error"); } Logger.logDebug("Creating new userid."); editUser.setRegistrationType(UserUtilities.REGISTRATION_TYPE_ADMIN); if(uh.allowPasswordUpdates(editUser, null, UserUtilities.AUTH_TYPE_UNKNOWN, UserUtilities.REQ_SOURCE_WEB)) { editUser.setPassword(UserUtilities.encryptPassword(userForm.getPassword())); } editUser = uh.createUser(editUser); } else if ("update".equals(userForm.getAction())) { UserModel existingUser = uh.getUser(editUser.getId()); if(existingUser != null) { previousLogin = existingUser.getLogin(); boolean performUpdate = true; if(! uh.allowProfileUpdates(existingUser, null, UserUtilities.AUTH_TYPE_UNKNOWN, UserUtilities.REQ_SOURCE_WEB)) { editUser = existingUser; performUpdate = false; } if(uh.allowPasswordUpdates(existingUser, null, UserUtilities.AUTH_TYPE_UNKNOWN, UserUtilities.REQ_SOURCE_WEB)) { if(userForm.getPassword() != null && ! userForm.getPassword().equals("")) { editUser.setPassword(UserUtilities.encryptPassword(userForm.getPassword())); performUpdate = true; } } if(performUpdate) { editUser = uh.updateUser(editUser); } } } else { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidaction")); } } catch(UserException ue) { ue.printStackTrace(); errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.existinglogin")); saveErrors(request, errors); saveToken(request); return mapping.getInputForward(); } if(errors.isEmpty() && uh.allowPermissionUpdates(editUser, null, UserUtilities.AUTH_TYPE_UNKNOWN, UserUtilities.REQ_SOURCE_WEB)) { HashMap permissions = userForm.getPermissions(); Vector permissionsVector = new Vector(); for(Iterator iter = permissions.keySet().iterator(); iter.hasNext(); ) { String paramName = (String) iter.next(); permissionsVector.addElement(new PermissionModel(new Integer(paramName.substring(paramName.lastIndexOf('j') + 1)), Integer.parseInt(paramName.substring(4,paramName.lastIndexOf('P'))))); } PermissionModel[] newPermissions = new PermissionModel[permissionsVector.size()]; permissionsVector.copyInto(newPermissions); uh.setUserPermissions(editUser.getId(), newPermissions); } if(errors.isEmpty()) { if(! previousLogin.equals(editUser.getLogin())) { if(SessionManager.getSessionStart(previousLogin) != null) { SessionManager.addRenamedLogin(previousLogin, editUser.getLogin()); SessionManager.setSessionNeedsReset(previousLogin); } } else { if(SessionManager.getSessionStart(editUser.getLogin()) != null) { SessionManager.setSessionNeedsReset(editUser.getLogin()); } } Logger.logDebug("Forwarding to list users."); session.removeAttribute(Constants.EDIT_USER_KEY); return mapping.findForward("listusers"); } } catch(Exception e) { Logger.logError("Exception processing form data", e); errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system")); } if(! errors.isEmpty()) { saveErrors(request, errors); saveToken(request); return mapping.getInputForward(); } session.removeAttribute(Constants.EDIT_USER_KEY); return mapping.findForward("error"); } } --- NEW FILE: LockUserAction.java --- /* * This software was designed and created by Jason Carroll. * Copyright (c) 2002, 2003, 2004 Jason Carroll. * The author can be reached at jca...@co... * ITracker website: http://www.cowsultants.com * ITracker forums: http://www.cowsultants.com/phpBB/index.php * * This program is free software; you can redistribute it and/or modify * it only under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ package cowsultants.itracker.web.actions.admin.user; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import cowsultants.itracker.ejb.client.interfaces.UserHandler; import cowsultants.itracker.ejb.client.models.UserModel; import cowsultants.itracker.ejb.client.util.UserUtilities; import cowsultants.itracker.web.actions.notyetsorted.ITrackerAction; import cowsultants.itracker.web.util.SessionManager; public class LockUserAction extends ITrackerAction { public LockUserAction() { } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ActionErrors errors = new ActionErrors(); if(! isLoggedIn(request, response)) { return mapping.findForward("login"); } if(! hasPermission(UserUtilities.PERMISSION_USER_ADMIN, request, response)) { return mapping.findForward("unauthorized"); } try { UserHandler uh = getITrackerServices().getUserHandler(); Integer userId = new Integer((request.getParameter("id") == null ? "-1" : (request.getParameter("id")))); if(uh.setUserStatus(userId, UserUtilities.STATUS_LOCKED)) { uh.clearOwnedProjects(userId); UserModel user = uh.getUser(userId); if(user != null && SessionManager.getSessionStart(user.getLogin()) != null) { SessionManager.setSessionNeedsReset(user.getLogin()); } } } catch(Exception e) { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system")); } if(! errors.isEmpty()) { saveErrors(request, errors); } return mapping.findForward("listusers"); } } --- NEW FILE: EditUserFormAction.java --- /* * This software was designed and created by Jason Carroll. * Copyright (c) 2002, 2003, 2004 Jason Carroll. * The author can be reached at jca...@co... * ITracker website: http://www.cowsultants.com * ITracker forums: http://www.cowsultants.com/phpBB/index.php * * This program is free software; you can redistribute it and/or modify * it only under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ package cowsultants.itracker.web.actions.admin.user; import java.io.IOException; import java.util.HashMap; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import cowsultants.itracker.ejb.client.interfaces.UserHandler; import cowsultants.itracker.ejb.client.models.PermissionModel; import cowsultants.itracker.ejb.client.models.UserModel; import cowsultants.itracker.ejb.client.util.Logger; import cowsultants.itracker.ejb.client.util.UserUtilities; import cowsultants.itracker.web.actions.notyetsorted.ITrackerAction; import cowsultants.itracker.web.forms.UserForm; import cowsultants.itracker.web.util.Constants; public class EditUserFormAction extends ITrackerAction { public EditUserFormAction() { } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ActionErrors errors = new ActionErrors(); if(! isLoggedIn(request, response)) { return mapping.findForward("login"); } if(! hasPermission(UserUtilities.PERMISSION_USER_ADMIN, request, response)) { return mapping.findForward("unauthorized"); } HttpSession session = request.getSession(true); try { UserHandler uh = getITrackerServices().getUserHandler(); UserModel editUser = null; HashMap userPermissions = new HashMap(); UserForm userForm = (UserForm) form; if(userForm == null) { userForm = new UserForm(); } String action = (String) request.getParameter("action"); if("create".equals(action)) { if(! uh.allowProfileCreation(null, null, UserUtilities.AUTH_TYPE_UNKNOWN, UserUtilities.REQ_SOURCE_WEB)) { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.noprofilecreates")); saveErrors(request, errors); return mapping.findForward("error"); } editUser = new UserModel(); editUser.setId(new Integer(-1)); editUser.setStatus(UserUtilities.STATUS_ACTIVE); userForm.setAction("create"); userForm.setId(editUser.getId()); } else if ("update".equals(action)) { Integer userId = userForm.getId(); if(userId == null) { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invaliduser")); } else { editUser = uh.getUser(userId); if(editUser == null) { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invaliduser")); } else { userForm.setAction("update"); userForm.setId(editUser.getId()); userForm.setLogin(editUser.getLogin()); userForm.setFirstName(editUser.getFirstName()); userForm.setLastName(editUser.getLastName()); userForm.setEmail(editUser.getEmail()); userForm.setSuperUser(editUser.isSuperUser()); PermissionModel[] permissionArray = uh.getPermissionsByUserId(editUser.getId()); HashMap formPermissions = new HashMap(); for(int i = 0; i < permissionArray.length; i++) { if(userPermissions.get(permissionArray[i].getProjectId()) == null) { HashMap projectPermissions = new HashMap(); userPermissions.put(permissionArray[i].getProjectId(), projectPermissions); } formPermissions.put("Perm" + permissionArray[i].getPermissionType() + "Proj" + permissionArray[i].getProjectId(), "on"); ((HashMap) userPermissions.get(permissionArray[i].getProjectId())).put(Integer.toString(permissionArray[i].getPermissionType()), permissionArray[i]); } userForm.setPermissions(formPermissions); } } } else { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidaction")); } if(errors.isEmpty()) { request.setAttribute("userForm", userForm); session.setAttribute(Constants.EDIT_USER_KEY, editUser); session.setAttribute(Constants.EDIT_USER_PERMS_KEY, userPermissions); saveToken(request); return mapping.getInputForward(); } } catch(Exception e) { Logger.logError("Exception while creating edit user form.", e); errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system")); } if(! errors.isEmpty()) { saveErrors(request, errors); } return mapping.findForward("error"); } } --- NEW FILE: UnlockUserAction.java --- /* * This software was designed and created by Jason Carroll. * Copyright (c) 2002, 2003, 2004 Jason Carroll. * The author can be reached at jca...@co... * ITracker website: http://www.cowsultants.com * ITracker forums: http://www.cowsultants.com/phpBB/index.php * * This program is free software; you can redistribute it and/or modify * it only under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ package cowsultants.itracker.web.actions.admin.user; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import cowsultants.itracker.ejb.client.interfaces.UserHandler; import cowsultants.itracker.ejb.client.util.UserUtilities; import cowsultants.itracker.web.actions.notyetsorted.ITrackerAction; public class UnlockUserAction extends ITrackerAction { public UnlockUserAction() { } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ActionErrors errors = new ActionErrors(); if(! isLoggedIn(request, response)) { return mapping.findForward("login"); } if(! hasPermission(UserUtilities.PERMISSION_USER_ADMIN, request, response)) { return mapping.findForward("unauthorized"); } try { UserHandler uh = getITrackerServices().getUserHandler(); Integer userId = new Integer((request.getParameter("id") == null ? "-1" : (request.getParameter("id")))); uh.setUserStatus(userId, UserUtilities.STATUS_ACTIVE); } catch(Exception e) { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system")); } if(! errors.isEmpty()) { saveErrors(request, errors); } return mapping.findForward("listusers"); } } |