Index: lams_common/src/java/org/lamsfoundation/lams/signup/service/SignupService.java =================================================================== diff -u -r65ed3834599c7868a2f7948a02500b28b071b579 -r99beeb8773776122e621256bb35fd4539aeac75f --- lams_common/src/java/org/lamsfoundation/lams/signup/service/SignupService.java (.../SignupService.java) (revision 65ed3834599c7868a2f7948a02500b28b071b579) +++ lams_common/src/java/org/lamsfoundation/lams/signup/service/SignupService.java (.../SignupService.java) (revision 99beeb8773776122e621256bb35fd4539aeac75f) @@ -39,9 +39,9 @@ user.setAuthenticationMethod(getAuthenticationMethod(AuthenticationMethod.DB)); user.setLocale(getDefaultLocale()); user.setCreateDate(new Date()); - + userManagementService.updatePassword(user, password); - + // add to org SignupOrganisation signup = signupDAO.getSignupOrganisation(context); @@ -79,31 +79,30 @@ public void signinUser(String login, String context) { User user = userManagementService.getUserByLogin(login); - // add to org SignupOrganisation signup = signupDAO.getSignupOrganisation(context); - ArrayList rolesList = new ArrayList<>(); - rolesList.add(Role.ROLE_LEARNER.toString()); - if (signup.getAddAsStaff()) { - rolesList.add(Role.ROLE_MONITOR.toString()); - rolesList.add(Role.ROLE_AUTHOR.toString()); - } else if (signup.getAddWithAuthor()) { - rolesList.add(Role.ROLE_AUTHOR.toString()); - } else if (signup.getAddWithMonitor()) { - rolesList.add(Role.ROLE_MONITOR.toString()); - } + if (signup.getAddToLessons()) { + // if user is learner and logging in users get added to lessons, he is also added as a learner to all lessons + boolean addAsLearner = userManagementService.hasRoleInOrganisation(user, Role.ROLE_LEARNER, + signup.getOrganisation()); - userManagementService.setRolesForUserOrganisation(user, signup.getOrganisation().getOrganisationId(), - rolesList); + // if user is monitor and logging in users get added to lessons, he is also added as a monitor to all lessons + boolean addAsStaff = userManagementService.hasRoleInOrganisation(user, Role.ROLE_MONITOR, + signup.getOrganisation()); - if (signup.getAddToLessons()) { + if (!addAsLearner && !addAsStaff) { + return; + } + // add to lessons Set lessonSet = signup.getOrganisation().getLessons(); Iterator lessonIterator = lessonSet.iterator(); while (lessonIterator.hasNext()) { Lesson lesson = (Lesson) lessonIterator.next(); - lessonService.addLearner(lesson.getLessonId(), user.getUserId()); - if (signup.getAddAsStaff()) { + if (addAsLearner) { + lessonService.addLearner(lesson.getLessonId(), user.getUserId()); + } + if (addAsStaff) { lessonService.addStaffMember(lesson.getLessonId(), user.getUserId()); } }