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 @@
-
- ' />
-
- ' />
-
-
+
+ ' />
+
+
+
+ ' />
+
+
+