Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -rf1bb07deef7a7406e5880108eebcce30a9f91432 -r210b1674b3ad68f03fa954f4ae8e66aa93aa98ab Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r210b1674b3ad68f03fa954f4ae8e66aa93aa98ab --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 210b1674b3ad68f03fa954f4ae8e66aa93aa98ab) @@ -30,13 +30,12 @@ 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; import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.dto.OrganisationDTO; -import org.lamsfoundation.lams.usermanagement.dto.UserDTO; -import org.lamsfoundation.lams.usermanagement.dto.UserFlashDTO; import org.lamsfoundation.lams.usermanagement.dto.UserManageBean; /** @@ -321,4 +320,13 @@ * @param rolesList */ public void setRolesForUserOrganisation(User user, Organisation org, List rolesList); + + /** + * Returns list of roles suitable for the given orgType. + * @param rolelist + * @param isSysadmin + * @param orgType + * @return + */ + public List filterRoles(List rolelist, Boolean isSysadmin, OrganisationType orgType); } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -r6d023d698235f9bc14e1c877e325283741aebe83 -r210b1674b3ad68f03fa954f4ae8e66aa93aa98ab --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 6d023d698235f9bc14e1c877e325283741aebe83) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 210b1674b3ad68f03fa954f4ae8e66aa93aa98ab) @@ -683,5 +683,29 @@ save(user); } - + public List filterRoles(List rolelist, Boolean isSysadmin, OrganisationType orgType) { + List allRoles = new ArrayList(); + allRoles.addAll(rolelist); + Role role = new Role(); + if (!orgType.getOrganisationTypeId().equals(OrganisationType.ROOT_TYPE) || !isSysadmin) { + role.setRoleId(Role.ROLE_SYSADMIN); + allRoles.remove(role); + role.setRoleId(Role.ROLE_AUTHOR_ADMIN); + allRoles.remove(role); + } else { + role.setRoleId(Role.ROLE_AUTHOR); + allRoles.remove(role); + role.setRoleId(Role.ROLE_LEARNER); + allRoles.remove(role); + role.setRoleId(Role.ROLE_MONITOR); + allRoles.remove(role); + } + if(!orgType.getOrganisationTypeId().equals(OrganisationType.COURSE_TYPE)) { + role.setRoleId(Role.ROLE_COURSE_ADMIN); + allRoles.remove(role); + role.setRoleId(Role.ROLE_COURSE_MANAGER); + allRoles.remove(role); + } + return allRoles; + } } \ No newline at end of file