Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java =================================================================== diff -u -rcd7ba635f93755dd233ff93c394718d2f6bc2966 -rbd8f520de2f68177edd4b56458ba2427033b7286 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java (.../UserAction.java) (revision cd7ba635f93755dd233ff93c394718d2f6bc2966) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java (.../UserAction.java) (revision bd8f520de2f68177edd4b56458ba2427033b7286) @@ -24,6 +24,7 @@ /* $Id$ */ package org.lamsfoundation.lams.admin.web; +import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -72,7 +73,7 @@ private static Logger log = Logger.getLogger(UserAction.class); private static IUserManagementService service; - private List rolelist; + private List rolelist; private static List locales; public ActionForward edit(ActionMapping mapping, @@ -84,14 +85,11 @@ if(orgId != null) { request.setAttribute("org",orgId); } - OrganisationType orgType = ((Organisation)getService().findById(Organisation.class,orgId)).getOrganisationType(); + Organisation org = (Organisation)getService().findById(Organisation.class,orgId); + OrganisationType orgType = org.getOrganisationType(); + Boolean isSysadmin = request.isUserInRole(Role.SYSADMIN); - // remove sysadmin from role list for non-sysadmin users - User requestor = (User)getService().getUserByLogin(request.getRemoteUser()); - Boolean isSysadmin = getService().isUserInRole(requestor.getUserId(),getService().getRootOrganisation().getOrganisationId(),Role.SYSADMIN); - rolelist = getService().getRolesForOrgType(orgType,isSysadmin); - Collections.sort(rolelist); - request.setAttribute("rolelist",rolelist); + request.setAttribute("rolelist",filterRoles(rolelist,isSysadmin, orgType)); // set canEdit for whether user should be able to edit anything other than roles request.setAttribute("canEdit",isSysadmin); request.setAttribute("locales",locales); @@ -139,15 +137,14 @@ } } - Organisation org = (Organisation)getService().findById(Organisation.class,orgId); Organisation parentOrg = org.getParentOrganisation(); if(parentOrg!=null){ request.setAttribute("pOrgId",parentOrg.getOrganisationId()); request.setAttribute("pOrgName",parentOrg.getName()); } request.setAttribute("orgId",orgId); request.setAttribute("orgName",org.getName()); - request.setAttribute("orgType",org.getOrganisationType().getOrganisationTypeId()); + request.setAttribute("orgType",orgType.getOrganisationTypeId()); return mapping.findForward("user"); } @@ -163,12 +160,32 @@ return mapping.findForward("userlist"); } + + private List filterRoles(List rolelist, Boolean isSysadmin, OrganisationType orgType){ + List allRoles = new ArrayList(); + allRoles.addAll(rolelist); + Role role = new Role(); + if(!isSysadmin) { + role.setRoleId(Role.ROLE_SYSADMIN); + allRoles.remove(role); + } + if(orgType.getOrganisationTypeId().equals(OrganisationType.CLASS_TYPE)) { + role.setRoleId(Role.ROLE_COURSE_ADMIN); + allRoles.remove(role); + role.setRoleId(Role.ROLE_COURSE_MANAGER); + allRoles.remove(role); + } + return allRoles; + } + private IUserManagementService getService(){ if(service==null){ WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); service = (IUserManagementService) ctx.getBean("userManagementServiceTarget"); locales = getService().findAll(SupportedLocale.class); Collections.sort(locales); + rolelist = getService().findAll(Role.class); + Collections.sort(rolelist); } return service; } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -r73d514c4abd3da68dfa6fbb96fd3141c2726b6e2 -rbd8f520de2f68177edd4b56458ba2427033b7286 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 73d514c4abd3da68dfa6fbb96fd3141c2726b6e2) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision bd8f520de2f68177edd4b56458ba2427033b7286) @@ -30,7 +30,6 @@ import java.util.Vector; import org.lamsfoundation.lams.usermanagement.Organisation; -import org.lamsfoundation.lams.usermanagement.OrganisationType; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.SupportedLocale; import org.lamsfoundation.lams.usermanagement.User; @@ -290,12 +289,4 @@ */ public SupportedLocale getSupportedLocale(String language, String country); - /** - * - * @param orgType - * @param sysadmin - * @return a list of roles according to the organisation type and whether you want sysadmin or not - */ - public List getRolesForOrgType(OrganisationType orgType, Boolean sysadmin); - } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -ra07f122478a2eb187e7448fbfe41a738504e3f26 -rbd8f520de2f68177edd4b56458ba2427033b7286 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision a07f122478a2eb187e7448fbfe41a738504e3f26) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision bd8f520de2f68177edd4b56458ba2427033b7286) @@ -462,20 +462,4 @@ return results.isEmpty() ? null : (SupportedLocale)results.get(0); } - public List getRolesForOrgType(OrganisationType orgType, Boolean sysadmin) { - List allRoles = findAll(Role.class); - Role role = new Role(); - if(!sysadmin) { - role.setRoleId(Role.ROLE_SYSADMIN); - allRoles.remove(role); - } - if(orgType.getOrganisationTypeId().equals(OrganisationType.CLASS_TYPE)) { - role = new Role(); - role.setRoleId(Role.ROLE_COURSE_ADMIN); - allRoles.remove(role); - role.setRoleId(Role.ROLE_COURSE_MANAGER); - allRoles.remove(role); - } - return allRoles; - } }