Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/DisabledUserManageAction.java =================================================================== diff -u --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/DisabledUserManageAction.java (revision 0) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/DisabledUserManageAction.java (revision a2e0d660d0c50a18dd23de83d3f14ae98e2695c9) @@ -0,0 +1,90 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.admin.web; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.MessageService; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +/** + * @author jliew + * + * @struts:action path="/disabledmanage" validate="false" + * + * @struts:action-forward name="disabledlist" path=".disabledlist" + */ +public class DisabledUserManageAction extends Action { + + private static final Logger log = Logger.getLogger(DisabledUserManageAction.class); + private static IUserManagementService service; + private static MessageService messageService; + + public ActionForward execute(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws Exception { + + if (!request.isUserInRole(Role.SYSADMIN)) { + request.setAttribute("errorName","UserAction"); + request.setAttribute("errorMessage",getMessageService().getMessage("error.need.sysadmin")); + return mapping.findForward("error"); + } + + List users = getService().findByProperty(User.class, "disabledFlag", true); + log.debug("got "+users.size()+" disabled users"); + request.setAttribute("users", users); + + return mapping.findForward("disabledlist"); + } + + private IUserManagementService getService() { + if(service==null){ + WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); + service = (IUserManagementService) ctx.getBean("userManagementServiceTarget"); + } + return service; + } + + private MessageService getMessageService(){ + if(messageService==null){ + WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); + messageService = (MessageService)ctx.getBean("adminMessageService"); + } + return messageService; + } +} Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java =================================================================== diff -u -r4982dee5cff4f3d595d5b2d6d923daac76898dc2 -ra2e0d660d0c50a18dd23de83d3f14ae98e2695c9 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java (.../UserAction.java) (revision 4982dee5cff4f3d595d5b2d6d923daac76898dc2) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java (.../UserAction.java) (revision a2e0d660d0c50a18dd23de83d3f14ae98e2695c9) @@ -54,6 +54,7 @@ import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.springframework.web.context.WebApplicationContext; @@ -75,11 +76,13 @@ * @struts:action-forward name="user" path=".user" * @struts:action-forward name="userlist" path="/usermanage.do" * @struts:action-forward name="remove" path=".remove" + * @struts:action-forward name="disabledlist" path="/disabledmanage.do" */ public class UserAction extends LamsDispatchAction { private static Logger log = Logger.getLogger(UserAction.class); private static IUserManagementService service; + private static MessageService messageService; private static List rolelist; private static List locales; @@ -159,13 +162,18 @@ HttpServletRequest request, HttpServletResponse response) throws Exception { + if (!request.isUserInRole(Role.SYSADMIN)) { + request.setAttribute("errorName","UserAction"); + request.setAttribute("errorMessage",getMessageService().getMessage("error.need.sysadmin")); + return mapping.findForward("error"); + } + Integer orgId = WebUtil.readIntParam(request,"orgId"); Integer userId = WebUtil.readIntParam(request,"userId",true); User user = (User)getService().findById(User.class,userId); - Boolean hasData = userHasData(user); + Boolean hasData = getService().userHasData(user); - log.debug("user has data: "+hasData); request.setAttribute("method", (hasData?"disable":"delete")); request.setAttribute("orgId",orgId); request.setAttribute("userId",userId); @@ -177,20 +185,15 @@ HttpServletRequest request, HttpServletResponse response) throws Exception { - Integer orgId = WebUtil.readIntParam(request,"orgId"); - Integer userId = WebUtil.readIntParam(request,"userId",true); - User user = (User)getService().findById(User.class,userId); - - user.setDisabledFlag(true); - log.debug("deleting userId="+userId+"'s userorgs"); - Set uos = user.getUserOrganisations(); - Iterator iter = uos.iterator(); - while(iter.hasNext()) { - getService().delete(iter.next()); - iter.remove(); + if (!request.isUserInRole(Role.SYSADMIN)) { + request.setAttribute("errorName","UserAction"); + request.setAttribute("errorMessage",getMessageService().getMessage("error.need.sysadmin")); + return mapping.findForward("error"); } - getService().save(user); + Integer orgId = WebUtil.readIntParam(request,"orgId"); + Integer userId = WebUtil.readIntParam(request,"userId",true); + getService().disableUser(userId); request.setAttribute("org",orgId); return mapping.findForward("userlist"); } @@ -200,13 +203,47 @@ HttpServletRequest request, HttpServletResponse response) throws Exception { + if (!request.isUserInRole(Role.SYSADMIN)) { + request.setAttribute("errorName","UserAction"); + request.setAttribute("errorMessage",getMessageService().getMessage("error.need.sysadmin")); + return mapping.findForward("error"); + } + Integer orgId = WebUtil.readIntParam(request,"orgId"); Integer userId = WebUtil.readIntParam(request,"userId",true); - getService().removeUser(userId); + try { + getService().removeUser(userId); + } catch (Exception e) { + request.setAttribute("errorName","UserAction"); + request.setAttribute("errorMessage",e.getMessage()); + return mapping.findForward("error"); + } request.setAttribute("org",orgId); return mapping.findForward("userlist"); } + // called from disabled users screen + public ActionForward enable(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws Exception { + + if (!request.isUserInRole(Role.SYSADMIN)) { + request.setAttribute("errorName","UserAction"); + request.setAttribute("errorMessage",getMessageService().getMessage("error.need.sysadmin")); + return mapping.findForward("error"); + } + + Integer userId = WebUtil.readIntParam(request,"userId",true); + User user = (User)getService().findById(User.class,userId); + + log.debug("enabling user: "+userId); + user.setDisabledFlag(false); + getService().save(user); + + return mapping.findForward("disabledlist"); + } + private List filterRoles(List rolelist, Boolean isSysadmin, OrganisationType orgType){ List allRoles = new ArrayList(); allRoles.addAll(rolelist); @@ -224,41 +261,6 @@ return allRoles; } - // check user has done anything - private Boolean userHasData(User user) { - if (user.getLearnerProgresses()!=null) { - if (!user.getLearnerProgresses().isEmpty()) { - log.debug("learnerProgresses: "+user.getLearnerProgresses().size()); - return true; - } - } - if (user.getUserToolSessions()!=null) { - if (!user.getUserToolSessions().isEmpty()) { - log.debug("userToolSessions: "+user.getUserToolSessions().size()); - return true; - } - } - if (user.getLearningDesigns()!=null) { - if (!user.getLearningDesigns().isEmpty()) { - log.debug("learningDesigns: "+user.getLearningDesigns().size()); - return true; - } - } - if (user.getLessons()!=null) { - if (!user.getLessons().isEmpty()) { - log.debug("lessons: "+user.getLessons().size()); - return true; - } - } - if (user.getUserGroups()!=null) { - if (!user.getUserGroups().isEmpty()) { - log.debug("userGroups: "+user.getUserGroups().size()); - return true; - } - } - return false; - } - @SuppressWarnings("unchecked") private IUserManagementService getService(){ if(service==null){ @@ -271,4 +273,12 @@ } return service; } + + private MessageService getMessageService(){ + if(messageService==null){ + WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); + messageService = (MessageService)ctx.getBean("adminMessageService"); + } + return messageService; + } } \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgAction.java =================================================================== diff -u -rc2cee57555afd519f8592f17626a21f41499fcac -ra2e0d660d0c50a18dd23de83d3f14ae98e2695c9 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgAction.java (.../UserOrgAction.java) (revision c2cee57555afd519f8592f17626a21f41499fcac) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgAction.java (.../UserOrgAction.java) (revision a2e0d660d0c50a18dd23de83d3f14ae98e2695c9) @@ -36,7 +36,6 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.action.DynaActionForm; import org.lamsfoundation.lams.usermanagement.Organisation; @@ -122,6 +121,7 @@ return mapping.findForward("error"); } } + users = removeDisabledUsers(users); Collections.sort(users); request.setAttribute("userlist",users); @@ -141,6 +141,17 @@ return mapping.findForward("userorg"); } + private List removeDisabledUsers(List userList) { + List filteredList = new ArrayList(); + for(int i=0; i + + + + + Index: lams_admin/web/disabledusers.jsp =================================================================== diff -u --- lams_admin/web/disabledusers.jsp (revision 0) +++ lams_admin/web/disabledusers.jsp (revision a2e0d660d0c50a18dd23de83d3f14ae98e2695c9) @@ -0,0 +1,43 @@ +<%@ page contentType="text/html; charset=utf-8" language="java" %> + +<%@ taglib uri="tags-bean" prefix="bean" %> +<%@ taglib uri="tags-logic" prefix="logic" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-fmt" prefix="fmt" %> + +
+

Disabled Users

+

 

+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
\ No newline at end of file