Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java =================================================================== diff -u -ra4032a595915440add6565c15cd55711da942dc1 -rb822a1e2825418f944ad7194a8b69be2ec9fee6d --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java (.../UserAction.java) (revision a4032a595915440add6565c15cd55711da942dc1) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java (.../UserAction.java) (revision b822a1e2825418f944ad7194a8b69be2ec9fee6d) @@ -94,12 +94,16 @@ Organisation org = (Organisation)getService().findById(Organisation.class,orgId); OrganisationType orgType = org.getOrganisationType(); Boolean isSysadmin = request.isUserInRole(Role.SYSADMIN); + User requestor = (User)getService().getUserByLogin(request.getRemoteUser()); + Boolean hasRole = getService().isUserInRole(requestor.getUserId(), orgId, Role.COURSE_ADMIN) + || getService().isUserInRole(requestor.getUserId(), orgId, Role.COURSE_MANAGER); + Boolean canEdit = org.getCourseAdminCanAddNewUsers() && hasRole; ActionMessages errors = new ActionMessages(); 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("canEdit",isSysadmin || canEdit); request.setAttribute("locales",locales); // editing a user Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserListDTO.java =================================================================== diff -u -r4f67a11d711eb38ce093d0be865beb700b7f404b -rb822a1e2825418f944ad7194a8b69be2ec9fee6d --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserListDTO.java (.../UserListDTO.java) (revision 4f67a11d711eb38ce093d0be865beb700b7f404b) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserListDTO.java (.../UserListDTO.java) (revision b822a1e2825418f944ad7194a8b69be2ec9fee6d) @@ -38,6 +38,8 @@ private List userManageBeans; private Integer orgId; private String orgName; + private Boolean courseAdminCanAddNewUsers; + private Boolean courseAdminCanBrowseAllUsers; public List getUserManageBeans() { return userManageBeans; @@ -62,4 +64,20 @@ public void setOrgName(String orgName) { this.orgName = orgName; } + + public Boolean getCourseAdminCanAddNewUsers() { + return courseAdminCanAddNewUsers; + } + + public void setCourseAdminCanAddNewUsers(Boolean courseAdminCanAddNewUsers) { + this.courseAdminCanAddNewUsers = courseAdminCanAddNewUsers; + } + + public Boolean getCourseAdminCanBrowseAllUsers() { + return courseAdminCanBrowseAllUsers; + } + + public void setCourseAdminCanBrowseAllUsers(Boolean courseAdminCanBrowseAllUsers) { + this.courseAdminCanBrowseAllUsers = courseAdminCanBrowseAllUsers; + } } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserManageAction.java =================================================================== diff -u -rc2cee57555afd519f8592f17626a21f41499fcac -rb822a1e2825418f944ad7194a8b69be2ec9fee6d --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserManageAction.java (.../UserManageAction.java) (revision c2cee57555afd519f8592f17626a21f41499fcac) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserManageAction.java (.../UserManageAction.java) (revision b822a1e2825418f944ad7194a8b69be2ec9fee6d) @@ -109,23 +109,25 @@ OrganisationType orgType = organisation.getOrganisationType(); request.setAttribute("orgType",orgType.getOrganisationTypeId()); + // create form object + UserListDTO userManageForm = new UserListDTO(); Integer userId = ((UserDTO)SessionManager.getSession().getAttribute(AttributeNames.USER)).getUserID(); Organisation orgOfCourseAdmin = (orgType.getOrganisationTypeId().equals(OrganisationType.CLASS_TYPE)) ? pOrg : organisation; // check permission if(request.isUserInRole(Role.SYSADMIN)){ - request.setAttribute("canAdd",true); - }else if(getService().isUserInRole(userId,orgOfCourseAdmin.getOrganisationId(),Role.COURSE_ADMIN) || getService().isUserInRole(userId,orgOfCourseAdmin.getOrganisationId(),Role.COURSE_MANAGER)){ - request.setAttribute("canAdd",orgOfCourseAdmin.getCourseAdminCanAddNewUsers()); + userManageForm.setCourseAdminCanAddNewUsers(true); + userManageForm.setCourseAdminCanBrowseAllUsers(true); + }else if(getService().isUserInRole(userId,orgOfCourseAdmin.getOrganisationId(),Role.COURSE_ADMIN) + || getService().isUserInRole(userId,orgOfCourseAdmin.getOrganisationId(),Role.COURSE_MANAGER)){ + userManageForm.setCourseAdminCanAddNewUsers(orgOfCourseAdmin.getCourseAdminCanAddNewUsers()); + userManageForm.setCourseAdminCanBrowseAllUsers(orgOfCourseAdmin.getCourseAdminCanBrowseAllUsers()); }else{ request.setAttribute("errorName","UserManageAction"); request.setAttribute("errorMessage",getMessageService().getMessage("error.authorisation")); return mapping.findForward("error"); } - - // create form object - UserListDTO userManageForm = new UserListDTO(); userManageForm.setOrgId(orgId); userManageForm.setOrgName(orgName); List userManageBeans = getService().getUserManageBeans(orgId); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgAction.java =================================================================== diff -u -ra2e0d660d0c50a18dd23de83d3f14ae98e2695c9 -rb822a1e2825418f944ad7194a8b69be2ec9fee6d --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgAction.java (.../UserOrgAction.java) (revision a2e0d660d0c50a18dd23de83d3f14ae98e2695c9) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgAction.java (.../UserOrgAction.java) (revision b822a1e2825418f944ad7194a8b69be2ec9fee6d) @@ -106,20 +106,19 @@ Organisation orgOfCourseAdmin = (orgType.equals(OrganisationType.CLASS_TYPE)) ? parentOrg : organisation; if(request.isUserInRole(Role.SYSADMIN)){ users = getService().findAll(User.class); - }else if(getService().isUserInRole(userId,orgOfCourseAdmin.getOrganisationId(),Role.COURSE_ADMIN)){ - if(orgOfCourseAdmin.getCourseAdminCanAddNewUsers()){ - if(orgOfCourseAdmin.getCourseAdminCanBrowseAllUsers()){ - users = getService().findAll(User.class); - }else if(orgType.equals(OrganisationType.CLASS_TYPE)){ - users = getService().getUsersFromOrganisation(parentOrg.getOrganisationId()); - }else if(orgType.equals(OrganisationType.COURSE_TYPE)){ - users = getService().getUsersFromOrganisation(orgId); - } - }else{ - request.setAttribute("errorName","UserOrgAction"); - request.setAttribute("errorMessage",getMessageService().getMessage("error.authorisation")); - return mapping.findForward("error"); + }else if(getService().isUserInRole(userId,orgOfCourseAdmin.getOrganisationId(),Role.COURSE_ADMIN) + || getService().isUserInRole(userId,orgOfCourseAdmin.getOrganisationId(),Role.COURSE_MANAGER)){ + if(orgOfCourseAdmin.getCourseAdminCanBrowseAllUsers()){ + users = getService().findAll(User.class); + }else if(orgType.equals(OrganisationType.CLASS_TYPE)){ + users = getService().getUsersFromOrganisation(parentOrg.getOrganisationId()); + }else if(orgType.equals(OrganisationType.COURSE_TYPE)){ + users = getService().getUsersFromOrganisation(orgId); } + }else{ + request.setAttribute("errorName","UserOrgAction"); + request.setAttribute("errorMessage",getMessageService().getMessage("error.authorisation")); + return mapping.findForward("error"); } users = removeDisabledUsers(users); Collections.sort(users); Index: lams_admin/web/userlist.jsp =================================================================== diff -u -reedb3718cf7ff315cf06806c338eec2f3cfae962 -rb822a1e2825418f944ad7194a8b69be2ec9fee6d --- lams_admin/web/userlist.jsp (.../userlist.jsp) (revision eedb3718cf7ff315cf06806c338eec2f3cfae962) +++ lams_admin/web/userlist.jsp (.../userlist.jsp) (revision b822a1e2825418f944ad7194a8b69be2ec9fee6d) @@ -15,12 +15,15 @@

- - ' /> - - ' />

- - + + ' /> + + + + ' /> + + +