Index: lams_central/src/java/org/lamsfoundation/lams/web/GradebookServlet.java =================================================================== diff -u -r33829c670fd8c90447d62ea3300498a103905e7a -ra5bb8ab1bbc5f6732acef6132286e89c80f2e8f3 --- lams_central/src/java/org/lamsfoundation/lams/web/GradebookServlet.java (.../GradebookServlet.java) (revision 33829c670fd8c90447d62ea3300498a103905e7a) +++ lams_central/src/java/org/lamsfoundation/lams/web/GradebookServlet.java (.../GradebookServlet.java) (revision a5bb8ab1bbc5f6732acef6132286e89c80f2e8f3) @@ -128,7 +128,7 @@ ExtUserUseridMap userMap = integrationService.getExtUserUseridMap(extServer, username); ExtCourseClassMap orgMap = integrationService.getExtCourseClassMap(extServer, userMap, extCourseId, courseName, userManagementService.getRootOrganisation().getOrganisationId().toString(), - isTeacher, false); + method, false); Integer organisationId = orgMap.getOrganisation().getOrganisationId(); //when displaying GRADEBOOK_MONITOR_ORGANISATION_URL we need to make sure user has ROLE_GROUP_MANAGER role Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -ra5bb8ab1bbc5f6732acef6132286e89c80f2e8f3 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision a5bb8ab1bbc5f6732acef6132286e89c80f2e8f3) @@ -53,7 +53,7 @@ String prettyCourseName, String method) throws UserInfoValidationException; ExtCourseClassMap getExtCourseClassMap(ExtServer extServer, ExtUserUseridMap userMap, String extCourseId, - String extCourseName, String parentOrgId, Boolean isTeacher, Boolean prefix) + String extCourseName, String parentOrgId, String method, Boolean prefix) throws UserInfoValidationException; ExtUserUseridMap getExtUserUseridMap(ExtServer extServer, String extUsername, boolean prefix) Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -ra5bb8ab1bbc5f6732acef6132286e89c80f2e8f3 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision a5bb8ab1bbc5f6732acef6132286e89c80f2e8f3) @@ -147,10 +147,8 @@ courseName = extCourseId; } - Boolean isTeacher = (StringUtils.equals(method, LoginRequestDispatcher.METHOD_AUTHOR) - || StringUtils.equals(method, LoginRequestDispatcher.METHOD_MONITOR)); return getExtCourseClassMap(extServer, userMap, extCourseId, courseName, - service.getRootOrganisation().getOrganisationId().toString(), isTeacher, prefix); + service.getRootOrganisation().getOrganisationId().toString(), method, prefix); } // wrapper method for compatibility with original integration modules @@ -164,7 +162,7 @@ // 'teacher' roles, and a flag for whether to use a prefix in the org's name @Override public ExtCourseClassMap getExtCourseClassMap(ExtServer extServer, ExtUserUseridMap userMap, String extCourseId, - String extCourseName, String parentOrgId, Boolean isTeacher, Boolean prefix) + String extCourseName, String parentOrgId, String method, Boolean prefix) throws UserInfoValidationException { Organisation org; User user = userMap.getUser(); @@ -194,7 +192,7 @@ } } - updateUserRoles(user, org, isTeacher); + updateUserRoles(user, org, method); return extCourseClassMap; } @@ -212,7 +210,16 @@ return extCourseClassMap; } - private void updateUserRoles(User user, Organisation org, Boolean isTeacher) { + /** + * Updates user roles based on the provided method parameter. It method is "author" - we assign Role.ROLE_AUTHOR, + * Role.ROLE_MONITOR, Role.ROLE_LEARNER; if method is "monitor" - we assign Role.ROLE_MONITOR; in all other cases + * assign Role.ROLE_LEARNER. + * + * @param user + * @param org + * @param method + */ + private void updateUserRoles(User user, Organisation org, String method) { //create UserOrganisation if it doesn't exist UserOrganisation uo = service.getUserOrganisation(user.getUserId(), org.getOrganisationId()); @@ -222,10 +229,14 @@ user.addUserOrganisation(uo); service.saveUser(user); } - + Integer[] roles; - if (isTeacher) { + if (StringUtils.equals(method, LoginRequestDispatcher.METHOD_AUTHOR)) { roles = new Integer[] { Role.ROLE_AUTHOR, Role.ROLE_MONITOR, Role.ROLE_LEARNER }; + + } else if (StringUtils.equals(method, LoginRequestDispatcher.METHOD_MONITOR)) { + roles = new Integer[] { Role.ROLE_MONITOR }; + } else { roles = new Integer[] { Role.ROLE_LEARNER }; } @@ -816,7 +827,7 @@ Integer userId = extUserUseridMap.getUser().getUserId(); //add user to organisation if it's not there - updateUserRoles(user, organisation, false); + updateUserRoles(user, organisation, LoginRequestDispatcher.METHOD_LEARNER); //check if user belong to the lesson. and if not - add it if (!lesson.getLessonClass().getLearnersGroup().hasLearner(user)) {