Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java,v diff -u -r1.30 -r1.31 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java 4 Sep 2006 02:51:22 -0000 1.30 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java 5 Sep 2006 05:47:56 -0000 1.31 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserListDTO.java,v diff -u -r1.3 -r1.4 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserListDTO.java 9 Aug 2006 07:07:00 -0000 1.3 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserListDTO.java 5 Sep 2006 05:47:56 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserManageAction.java,v diff -u -r1.14 -r1.15 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserManageAction.java 9 Aug 2006 07:06:16 -0000 1.14 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserManageAction.java 5 Sep 2006 05:47:56 -0000 1.15 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgAction.java,v diff -u -r1.10 -r1.11 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgAction.java 31 Aug 2006 04:41:41 -0000 1.10 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserOrgAction.java 5 Sep 2006 05:47:56 -0000 1.11 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_admin/web/userlist.jsp,v diff -u -r1.9 -r1.10 --- lams_admin/web/userlist.jsp 26 Jul 2006 08:05:31 -0000 1.9 +++ lams_admin/web/userlist.jsp 5 Sep 2006 05:47:57 -0000 1.10 @@ -15,12 +15,15 @@

- - ' /> - - ' />

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