Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LoginSaveController.java =================================================================== diff -u -rc4e36699eb3bd56b59e196872bf4fb46b9f3730c -r1213a02c3a110a9e55863857574a7703263c6d5f --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LoginSaveController.java (.../LoginSaveController.java) (revision c4e36699eb3bd56b59e196872bf4fb46b9f3730c) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LoginSaveController.java (.../LoginSaveController.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) @@ -35,6 +35,7 @@ import org.lamsfoundation.lams.admin.web.form.LoginMaintainForm; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.web.filter.AuditLogFilter; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; @@ -61,6 +62,8 @@ bWriter = new BufferedWriter(ow); bWriter.write(loginMaintainForm.getNews()); bWriter.flush(); + + AuditLogFilter.log(AuditLogFilter.LOGIN_PAGE_CHANGE_ACTION, "login page changed"); } finally { if (bWriter != null) { bWriter.close(); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SessionMaintainController.java =================================================================== diff -u -re6dc4db4137cfd6b07a4aa79711b9d12b39fb78e -r1213a02c3a110a9e55863857574a7703263c6d5f --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SessionMaintainController.java (.../SessionMaintainController.java) (revision e6dc4db4137cfd6b07a4aa79711b9d12b39fb78e) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SessionMaintainController.java (.../SessionMaintainController.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) @@ -29,6 +29,7 @@ import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.web.filter.AuditLogFilter; import org.lamsfoundation.lams.web.session.SessionManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -63,6 +64,8 @@ String message = new StringBuilder("User ").append(login).append(" (").append(user.getUserId()) .append(") got logged out by sysadmin").toString(); logEventService.logEvent(LogEvent.TYPE_LOGOUT, user.getUserId(), user.getUserId(), null, null, message); + + AuditLogFilter.log(AuditLogFilter.SESSION_DELETE_ACTION, message); } return list(request); } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SignupManagementController.java =================================================================== diff -u -r351f9417a32d396911387eeef3117fd40be35b7c -r1213a02c3a110a9e55863857574a7703263c6d5f --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SignupManagementController.java (.../SignupManagementController.java) (revision 351f9417a32d396911387eeef3117fd40be35b7c) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SignupManagementController.java (.../SignupManagementController.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) @@ -72,6 +72,9 @@ List organisations = signupService.getOrganisationCandidates(); request.setAttribute("organisations", organisations); + AuditLogFilter.log(AuditLogFilter.SIGNUP_PAGE_EDIT_ACTION, + "signup for organisation: " + signup.getOrganisation().getName()); + return "signupmanagement/add"; } } @@ -147,7 +150,7 @@ SignupOrganisation signupOrganisation = (SignupOrganisation) userManagementService .findById(SignupOrganisation.class, soid); - AuditLogFilter.log(AuditLogFilter.SIGNUP_PAGE_ADD_ACTION, + AuditLogFilter.log(AuditLogFilter.SIGNUP_PAGE_DELETE_ACTION, "signup for organisation: " + signupOrganisation.getOrganisation().getName()); userManagementService.delete(signupOrganisation); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgRoleSaveController.java =================================================================== diff -u -r351f9417a32d396911387eeef3117fd40be35b7c -r1213a02c3a110a9e55863857574a7703263c6d5f --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgRoleSaveController.java (.../UserOrgRoleSaveController.java) (revision 351f9417a32d396911387eeef3117fd40be35b7c) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgRoleSaveController.java (.../UserOrgRoleSaveController.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) @@ -79,6 +79,7 @@ request.setAttribute("org", orgId); request.getSession().removeAttribute("userOrgRoleForm"); + StringBuilder logMessageBuilder = new StringBuilder(); Organisation organisation = (Organisation) userManagementService.findById(Organisation.class, orgId); // save UserOrganisation memberships, and the associated roles; // for subgroups, if user is not a member of the parent group then add to that as well. @@ -97,8 +98,13 @@ } userManagementService.setRolesForUserOrganisation(user, orgId, Arrays.asList(roleIds)); - auditLog(organisation, user.getUserId(), roleIds); - + List roles = Stream.of(roleIds).collect(Collectors + .mapping(roleId -> Role.ROLE_MAP.get(Integer.valueOf(roleId)), Collectors.toUnmodifiableList())); + logMessageBuilder.append("to user ").append(user.getFirstName()).append(" ").append(user.getLastName()) + .append(" (").append(user.getLogin()).append(") assigned roles ").append(roles); + if (i < userBeans.size() - 1) { + logMessageBuilder.append(", "); + } // FMALIKOFF 5/7/7 Commented out the following code that set the roles in the course if the current org is a class, as the logic // is done in service.setRolesForUserOrganisation() //if (organisation.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.CLASS_TYPE)) { @@ -107,17 +113,12 @@ // } //} } + + if (logMessageBuilder.length() > 0) { + logMessageBuilder.append(" in organisation \"").append(organisation.getName()).append("\""); + AuditLogFilter.log(AuditLogFilter.ROLE_ADD_ACTION, logMessageBuilder); + } + return "redirect:/usermanage.do?org=" + orgId; } - - private void auditLog(Organisation organisation, Integer userId, String[] roleIds) { - List roles = Stream.of(roleIds).collect(Collectors - .mapping(roleId -> Role.ROLE_MAP.get(Integer.valueOf(roleId)), Collectors.toUnmodifiableList())); - User targetUser = userManagementService.getUserById(userId); - StringBuilder auditLogMessage = new StringBuilder("assigned to user ").append(targetUser.getFirstName()) - .append(" ").append(targetUser.getLastName()).append(" (").append(targetUser.getLogin()) - .append(") roles ").append(roles).append(" in organisation \"").append(organisation.getName()) - .append("\""); - AuditLogFilter.log(AuditLogFilter.ROLE_ADD_ACTION, auditLogMessage); - } } \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgSaveController.java =================================================================== diff -u -r351f9417a32d396911387eeef3117fd40be35b7c -r1213a02c3a110a9e55863857574a7703263c6d5f --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgSaveController.java (.../UserOrgSaveController.java) (revision 351f9417a32d396911387eeef3117fd40be35b7c) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgSaveController.java (.../UserOrgSaveController.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) @@ -195,7 +195,7 @@ } if (!removedUserIds.isEmpty()) { StringBuilder auditLogMessage = new StringBuilder(); - auditLogMessage.append("Removed users ").append(getUserNamesForLog(addedUserIds)) + auditLogMessage.append("Removed users ").append(getUserNamesForLog(removedUserIds)) .append(" from organisation \"").append(organisation.getName()).append("\""); AuditLogFilter.log(AuditLogFilter.USER_UNENROLL_ACTION, auditLogMessage); } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java =================================================================== diff -u -r351f9417a32d396911387eeef3117fd40be35b7c -r1213a02c3a110a9e55863857574a7703263c6d5f --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java (.../UserRolesSaveController.java) (revision 351f9417a32d396911387eeef3117fd40be35b7c) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java (.../UserRolesSaveController.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) @@ -110,10 +110,9 @@ List roles = Stream.of(roleIds).collect(Collectors .mapping(roleId -> Role.ROLE_MAP.get(Integer.valueOf(roleId)), Collectors.toUnmodifiableList())); User targetUser = userManagementService.getUserById(userId); - StringBuilder auditLogMessage = new StringBuilder("assigned to user ").append(targetUser.getFirstName()) - .append(" ").append(targetUser.getLastName()).append(" (").append(targetUser.getLogin()) - .append(") roles ").append(roles).append(" in organisation \"").append(organisation.getName()) - .append("\""); + StringBuilder auditLogMessage = new StringBuilder("to user ").append(targetUser.getFirstName()).append(" ") + .append(targetUser.getLastName()).append(" (").append(targetUser.getLogin()).append(") assigned roles ") + .append(roles).append(" in organisation \"").append(organisation.getName()).append("\""); AuditLogFilter.log(AuditLogFilter.ROLE_ADD_ACTION, auditLogMessage); } } \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/web/LoginAsController.java =================================================================== diff -u -r01792e22e47468240e10ebec63a0a7af5e6dd592 -r1213a02c3a110a9e55863857574a7703263c6d5f --- lams_central/src/java/org/lamsfoundation/lams/web/LoginAsController.java (.../LoginAsController.java) (revision 01792e22e47468240e10ebec63a0a7af5e6dd592) +++ lams_central/src/java/org/lamsfoundation/lams/web/LoginAsController.java (.../LoginAsController.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) @@ -40,6 +40,7 @@ import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.filter.AuditLogFilter; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.beans.factory.annotation.Autowired; @@ -92,6 +93,10 @@ String message = messageService.getMessage("audit.admin.loginas", args); logEventService.logEvent(LogEvent.TYPE_LOGIN_AS, sysadmin.getUserID(), user.getUserId(), null, null, message); + StringBuilder logMessageBuilder = new StringBuilder("logged in as user ") + .append(user.getFirstName()).append(" ").append(user.getLastName()).append(" (") + .append(user.getLogin()).append(")"); + AuditLogFilter.log(AuditLogFilter.LOGIN_AS_ACTION, logMessageBuilder); // login.jsp knows what to do with these request.setAttribute("login", login); Index: lams_common/src/java/org/lamsfoundation/lams/web/filter/AuditLogFilter.java =================================================================== diff -u -r351f9417a32d396911387eeef3117fd40be35b7c -r1213a02c3a110a9e55863857574a7703263c6d5f --- lams_common/src/java/org/lamsfoundation/lams/web/filter/AuditLogFilter.java (.../AuditLogFilter.java) (revision 351f9417a32d396911387eeef3117fd40be35b7c) +++ lams_common/src/java/org/lamsfoundation/lams/web/filter/AuditLogFilter.java (.../AuditLogFilter.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) @@ -33,8 +33,11 @@ public static final String CALL_ACTION = "endpoint_call"; public static final String CONFIG_CHANGE_ACTION = "configuration_change"; + public static final String LOGIN_PAGE_CHANGE_ACTION = "login_page_change"; public static final String TIMEZONE_CHANGE_ACTION = "timezone_change"; public static final String ACCOUNT_LOCKED_ACTION = "account_lock"; + public static final String LOGIN_AS_ACTION = "login_as"; + public static final String SESSION_DELETE_ACTION = "session_delete"; public static final String TOOL_ENABLED_ACTION = "tool_enable_action"; public static final String TOOL_DISABLE_ACTION = "tool_disable_action"; @@ -56,6 +59,7 @@ public static final String ORGANISATION_EDIT_ACTION = "org_edit"; public static final String LESSON_CLONE_ACTION = "lesson_clone"; + public static final String LESSONS_CLONE_ACTION = "lessons_clone"; public static final String LESSON_REMOVE_PERMAMENTLY_ACTION = "lesson_remove_perm"; public static final String INTEGRATED_SERVER_ADD_ACTION = "integrated_server_add"; @@ -76,6 +80,7 @@ public static final String SIGNUP_PAGE_ADD_ACTION = "signup_page_add"; public static final String SIGNUP_PAGE_DELETE_ACTION = "signup_page_delete"; + public static final String SIGNUP_PAGE_EDIT_ACTION = "signup_page_edit"; @Override public final void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -r351f9417a32d396911387eeef3117fd40be35b7c -r1213a02c3a110a9e55863857574a7703263c6d5f --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 351f9417a32d396911387eeef3117fd40be35b7c) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) @@ -2661,13 +2661,27 @@ UserDTO userDto = (UserDTO) ss.getAttribute(AttributeNames.USER); if (userDto != null) { Integer creatorId = userDto.getUserID(); - + StringBuilder logMessageBuilder = new StringBuilder("cloned lessons "); + Organisation organisation = null; for (String lessonIdStr : lessonIds) { Long lessonId = Long.parseLong(lessonIdStr); - - cloneLesson(lessonId, creatorId, addAllStaff, addAllLearners, staffIds, learnerIds, group); + cloneLesson(lessonId, creatorId, addAllStaff, addAllLearners, staffIds, learnerIds, group, false); result++; + + Lesson lesson = lessonService.getLesson(lessonId); + if (organisation == null) { + organisation = lesson.getOrganisation(); + } + logMessageBuilder.append("\"").append(lesson.getLessonName()).append("\", "); } + if (lessonIds.length > 0) { + logMessageBuilder.delete(logMessageBuilder.length() - 2, logMessageBuilder.length()) + .append(" from organisation \"").append(organisation.getName()).append("\" to \"") + .append(group.getName()).append("\""); + + AuditLogFilter.log(AuditLogFilter.LESSONS_CLONE_ACTION, logMessageBuilder); + } + } else { throw new MonitoringServiceException("No UserDTO in session, can't create any Lessons."); } @@ -2802,9 +2816,8 @@ return NumberUtil.formatLocalisedNumber(raw, (Locale) null, 2); } - @Override - public Long cloneLesson(Long lessonId, Integer creatorId, Boolean addAllStaff, Boolean addAllLearners, - String[] staffIds, String[] learnerIds, Organisation group) throws MonitoringServiceException { + private Long cloneLesson(Long lessonId, Integer creatorId, Boolean addAllStaff, Boolean addAllLearners, + String[] staffIds, String[] learnerIds, Organisation group, boolean log) { Lesson newLesson = null; securityService.isGroupMonitor(group.getOrganisationId(), creatorId, "cloneLesson", true); @@ -2838,11 +2851,13 @@ // start lesson; passing creatorId as this parameter is only used for security check whether user is allowed to start a lesson this.startLesson(newLesson.getLessonId(), creatorId); - StringBuilder logMessageBuilder = new StringBuilder("cloned lesson \"") - .append(lesson.getLessonName()).append("\" from organisation \"") - .append(lesson.getOrganisation().getName()).append("\" to \"").append(group.getName()) - .append("\""); - AuditLogFilter.log(AuditLogFilter.LESSON_CLONE_ACTION, logMessageBuilder); + if (log) { + StringBuilder logMessageBuilder = new StringBuilder("cloned lesson \"") + .append(lesson.getLessonName()).append("\" from organisation \"") + .append(lesson.getOrganisation().getName()).append("\" to \"").append(group.getName()) + .append("\""); + AuditLogFilter.log(AuditLogFilter.LESSON_CLONE_ACTION, logMessageBuilder); + } } else { throw new MonitoringServiceException("No learners specified, can't create any Lessons."); } @@ -2856,6 +2871,12 @@ return newLesson.getLessonId(); } + @Override + public Long cloneLesson(Long lessonId, Integer creatorId, Boolean addAllStaff, Boolean addAllLearners, + String[] staffIds, String[] learnerIds, Organisation group) throws MonitoringServiceException { + return cloneLesson(lessonId, creatorId, addAllStaff, addAllLearners, staffIds, learnerIds, group, true); + } + /* * Used in cloneLessons. */