Index: lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java =================================================================== diff -u -re57933d5f4b215e037a34229c3d479f707cf5156 -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java (.../ImportService.java) (revision e57933d5f4b215e037a34229c3d479f707cf5156) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java (.../ImportService.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -64,6 +64,7 @@ import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.ValidationUtil; 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; @@ -928,6 +929,8 @@ String message = messageService.getMessage(key, args); logEventService.logEvent(LogEvent.TYPE_USER_ORG_ADMIN, userDTO != null ? userDTO.getUserID() : null, null, null, null, message); + + AuditLogFilter.log(userDTO, AuditLogFilter.USER_BULK_ADD_ACTION, message); } // --------------------------------------------------------------------- Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/CloneLessonsController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/CloneLessonsController.java (.../CloneLessonsController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/CloneLessonsController.java (.../CloneLessonsController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -31,7 +31,6 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; @@ -55,8 +54,6 @@ @Controller @RequestMapping("/clone") public class CloneLessonsController { - private static final Logger log = Logger.getLogger(CloneLessonsController.class); - @Autowired private IUserManagementService userManagementService; @Autowired Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ConfigController.java =================================================================== diff -u -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ConfigController.java (.../ConfigController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ConfigController.java (.../ConfigController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -38,6 +38,7 @@ import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.LanguageUtil; import org.lamsfoundation.lams.util.MessageService; +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; @@ -141,6 +142,8 @@ String changeLogString = changeLog.insert(0, "Configuration changed: ").substring(0, changeLog.length() - 2); logEventService.logEvent(LogEvent.TYPE_CONFIG_CHANGE, getUserId(), null, null, null, changeLogString); + + AuditLogFilter.log(AuditLogFilter.CONFIG_CHANGE_ACTION, changeLogString); } Configuration.refreshCache(); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ExtServerManagementController.java =================================================================== diff -u -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ExtServerManagementController.java (.../ExtServerManagementController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ExtServerManagementController.java (.../ExtServerManagementController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -39,6 +39,7 @@ import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; 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; @@ -158,9 +159,15 @@ BeanUtils.copyProperties(map, extServerForm); map.setSid(null); map.setServerTypeId(ExtServer.INTEGRATION_SERVER_TYPE); + + AuditLogFilter.log(AuditLogFilter.INTEGRATED_SERVER_ADD_ACTION, + "integrated server name: " + map.getServerid()); } else { map = integrationService.getExtServer(sid); BeanUtils.copyProperties(map, extServerForm); + + AuditLogFilter.log(AuditLogFilter.INTEGRATED_SERVER_EDIT_ACTION, + "integrated server name: " + map.getServerid()); } integrationService.saveExtServer(map); return "forward:/extserver/serverlist.do"; @@ -178,6 +185,10 @@ ExtServer map = integrationService.getExtServer(sid); map.setDisabled(true); integrationService.saveExtServer(map); + + AuditLogFilter.log(AuditLogFilter.INTEGRATED_SERVER_DISABLE_ACTION, + "integrated server name: " + map.getServerid()); + return "redirect:/extserver/serverlist.do"; } @@ -189,6 +200,10 @@ ExtServer map = integrationService.getExtServer(sid); map.setDisabled(false); integrationService.saveExtServer(map); + + AuditLogFilter.log(AuditLogFilter.INTEGRATED_SERVER_ENABLE_ACTION, + "integrated server name: " + map.getServerid()); + return "redirect:/extserver/serverlist.do"; } @@ -197,7 +212,12 @@ securityService.isSysadmin(getUserId(), "delete integrated server", true); Integer sid = WebUtil.readIntParam(request, "sid", false); - userManagementService.deleteById(ExtServer.class, sid); + ExtServer extServer = integrationService.getExtServer(sid); + + AuditLogFilter.log(AuditLogFilter.INTEGRATED_SERVER_DELETE_ACTION, + "integrated server name: " + extServer.getServerid()); + + userManagementService.delete(extServer); return "redirect:/extserver/serverlist.do"; } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LoginSaveController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LoginSaveController.java (.../LoginSaveController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LoginSaveController.java (.../LoginSaveController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -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/LtiConsumerManagementController.java =================================================================== diff -u -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LtiConsumerManagementController.java (.../LtiConsumerManagementController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LtiConsumerManagementController.java (.../LtiConsumerManagementController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -28,6 +28,7 @@ import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; +import org.lamsfoundation.lams.web.filter.AuditLogFilter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; @@ -138,9 +139,25 @@ ltiConsumer.setDisabled(disable); integrationService.saveExtServer(ltiConsumer); + AuditLogFilter.log(AuditLogFilter.LTI_INTEGRATED_SERVER_DISABLE_ACTION, + "integrated server name: " + ltiConsumer.getServerid()); + return start(request); } + @RequestMapping(path = "/enable", method = RequestMethod.POST) + public String enable(HttpServletRequest request) throws Exception { + Integer sid = WebUtil.readIntParam(request, "sid", false); + ExtServer ltiConsumer = integrationService.getExtServer(sid); + ltiConsumer.setDisabled(false); + integrationService.saveExtServer(ltiConsumer); + + AuditLogFilter.log(AuditLogFilter.LTI_INTEGRATED_SERVER_ENABLE_ACTION, + "LTI integrated server name: " + ltiConsumer.getServerid()); + + return "redirect:/extserver/serverlist.do"; + } + /** * Removes specified LTI tool consumer */ @@ -149,8 +166,13 @@ securityService.isSysadmin(getUserId(), "delete LTI consumer", true); Integer sid = WebUtil.readIntParam(request, "sid", true); - userManagementService.deleteById(ExtServer.class, sid); + ExtServer extServer = integrationService.getExtServer(sid); + AuditLogFilter.log(AuditLogFilter.LTI_INTEGRATED_SERVER_DELETE_ACTION, + "LTI integrated server name: " + extServer.getServerid()); + + userManagementService.delete(extServer); + return start(request); } @@ -224,9 +246,14 @@ ltiConsumer.setServerTypeId(ExtServer.LTI_CONSUMER_SERVER_TYPE); ltiConsumer.setUserinfoUrl("blank"); + AuditLogFilter.log(AuditLogFilter.LTI_INTEGRATED_SERVER_ADD_ACTION, + "LTI integrated server name: " + ltiConsumer.getServerid()); } else { ltiConsumer = integrationService.getExtServer(sid); BeanUtils.copyProperties(ltiConsumer, ltiConsumerForm); + + AuditLogFilter.log(AuditLogFilter.LTI_INTEGRATED_SERVER_EDIT_ACTION, + "LTI integrated server name: " + ltiConsumer.getServerid()); } ltiConsumer.setTimeToLiveLoginRequestEnabled(false); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/OrganisationController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/OrganisationController.java (.../OrganisationController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/OrganisationController.java (.../OrganisationController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -25,7 +25,6 @@ import java.io.IOException; import java.util.List; -import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -34,6 +33,7 @@ import org.apache.commons.beanutils.BeanUtils; import org.apache.log4j.Logger; import org.lamsfoundation.lams.admin.web.form.OrganisationForm; +import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.security.ISecurityService; @@ -45,6 +45,7 @@ import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; 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; @@ -75,7 +76,7 @@ @Autowired @Qualifier("lessonService") private ILessonService lessonService; - + private static List status; @RequestMapping(path = "/edit") @@ -92,8 +93,7 @@ if (userManagementService.canEditGroup(userId, orgId)) { // edit existing organisation if (orgId != null) { - Organisation org = (Organisation) userManagementService.findById(Organisation.class, - orgId); + Organisation org = (Organisation) userManagementService.findById(Organisation.class, orgId); BeanUtils.copyProperties(organisationForm, org); organisationForm.setParentId(org.getParentOrganisation().getOrganisationId()); organisationForm.setParentName(org.getParentOrganisation().getName()); @@ -103,7 +103,7 @@ // find a course or subcourse with any lessons, so we warn user when he tries to delete the course Integer courseToDeleteLessons = org.getLessons().size() > 0 ? orgId : null; if (courseToDeleteLessons == null) { - for (Organisation subcourse : (Set) org.getChildOrganisations()) { + for (Organisation subcourse : org.getChildOrganisations()) { if (subcourse.getLessons().size() > 0) { courseToDeleteLessons = subcourse.getOrganisationId(); break; @@ -144,8 +144,7 @@ organisationForm.setOrgId(null); Integer parentId = WebUtil.readIntParam(request, "parentId", true); if (parentId != null) { - Organisation parentOrg = (Organisation) userManagementService.findById(Organisation.class, - parentId); + Organisation parentOrg = (Organisation) userManagementService.findById(Organisation.class, parentId); organisationForm.setParentName(parentOrg.getName()); } request.getSession().setAttribute("status", status); @@ -159,7 +158,8 @@ @ResponseBody public String getOrganisationIdByName(HttpServletRequest request, HttpServletResponse response) throws IOException { String organisationName = WebUtil.readStrParam(request, "name"); - List organisations = userManagementService.findByProperty(Organisation.class, "name", organisationName); + List organisations = userManagementService.findByProperty(Organisation.class, "name", + organisationName); if (!organisations.isEmpty()) { response.setContentType("text/plain;charset=utf-8"); response.getWriter().print(organisations.get(0).getOrganisationId()); @@ -196,17 +196,27 @@ Integer organisationId = WebUtil.readIntParam(request, "orgId"); Organisation organisation = (Organisation) userManagementService.findById(Organisation.class, organisationId); List lessonIDs = lessonService.getOrganisationLessons(organisationId); - for ( Long lessonId : lessonIDs) { + StringBuilder logMessageBuilder = new StringBuilder("removed permanently lessons in organisation \"") + .append(organisation.getName()).append("\": "); + for (Long lessonId : lessonIDs) { + Lesson lesson = lessonService.getLesson(lessonId); + logMessageBuilder.append("\"").append(lesson.getLessonName()).append("\" (").append(lessonId) + .append("), )"); log.info("Deleting lesson: " + lessonId); // role is checked in this method. This method requires that the lesson object has not be loaded into the Hibernate cache monitoringService.removeLessonPermanently(lessonId, userID); + if (limit != null) { limit--; if (limit == 0) { break; } } } + + logMessageBuilder.delete(logMessageBuilder.length() - 2, logMessageBuilder.length()); + AuditLogFilter.log(AuditLogFilter.LESSON_REMOVE_PERMAMENTLY_ACTION, logMessageBuilder); + response.setContentType("application/json;charset=utf-8"); response.getWriter().print(organisation.getLessons().size()); return null; Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SessionMaintainController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SessionMaintainController.java (.../SessionMaintainController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SessionMaintainController.java (.../SessionMaintainController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -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 appadmin").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/UserController.java =================================================================== diff -u -r3f3f34c22194aeaf302e1fd332925dffd35019aa -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserController.java (.../UserController.java) (revision 3f3f34c22194aeaf302e1fd332925dffd35019aa) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserController.java (.../UserController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -58,6 +58,7 @@ import org.lamsfoundation.lams.util.LanguageUtil; 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; @@ -327,6 +328,7 @@ String message = messageService.getMessage("audit.user.disable", args); logEventService.logEvent(LogEvent.TYPE_USER_ORG_ADMIN, appadmin != null ? appadmin.getUserID() : null, userId, null, null, message); + if ((orgId == null) || (orgId == 0)) { return "forward:../usersearch.do"; } else { @@ -381,6 +383,8 @@ user.setDisabledFlag(false); userManagementService.saveUser(user); + AuditLogFilter.log(AuditLogFilter.USER_ENABLE_ACTION, "user login: " + user.getLogin()); + return "forward:/disabledmanage.do"; } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgRoleSaveController.java =================================================================== diff -u -r3f3f34c22194aeaf302e1fd332925dffd35019aa -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgRoleSaveController.java (.../UserOrgRoleSaveController.java) (revision 3f3f34c22194aeaf302e1fd332925dffd35019aa) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgRoleSaveController.java (.../UserOrgRoleSaveController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -36,6 +36,7 @@ import org.lamsfoundation.lams.admin.web.dto.UserBean; import org.lamsfoundation.lams.admin.web.form.UserOrgRoleForm; import org.lamsfoundation.lams.security.ISecurityService; +import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; @@ -91,6 +92,8 @@ 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. for (int i = 0; i < userBeans.size(); i++) { @@ -123,8 +126,13 @@ userManagementService.save(user); } - auditLog(orgId, 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)) { @@ -133,6 +141,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; } @@ -141,12 +155,4 @@ UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); return user != null ? user.getUserID() : null; } - - private void auditLog(Integer organisationId, Integer userId, String[] roleIds) { - List roles = Stream.of(roleIds).collect(Collectors - .mapping(roleId -> Role.ROLE_MAP.get(Integer.valueOf(roleId)), Collectors.toUnmodifiableList())); - StringBuilder auditLogMessage = new StringBuilder("assigned to user ").append(userId).append(" roles ") - .append(roles).append(" in organisation ").append(organisationId); - AuditLogFilter.log(auditLogMessage); - } } \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgSaveController.java =================================================================== diff -u -r3f3f34c22194aeaf302e1fd332925dffd35019aa -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgSaveController.java (.../UserOrgSaveController.java) (revision 3f3f34c22194aeaf302e1fd332925dffd35019aa) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgSaveController.java (.../UserOrgSaveController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -158,7 +159,7 @@ organisation.setUserOrganisations(uos); userManagementService.save(organisation); - auditLog(orgId, + auditLog(organisation, newUserOrganisations.stream().collect( Collectors.mapping(uo -> uo.getUser().getUserId(), Collectors.toCollection(TreeSet::new))), removedUserIds, canEditRole); @@ -184,27 +185,29 @@ } } - private void auditLog(Integer organisationId, Set addedUserIds, Set removedUserIds, + private void auditLog(Organisation organisation, Set addedUserIds, Set removedUserIds, boolean canEditRole) { - if (addedUserIds.isEmpty() && removedUserIds.isEmpty()) { - return; - } - - StringBuilder auditLogMessage = new StringBuilder(); if (!addedUserIds.isEmpty()) { - auditLogMessage.append("added users ").append(addedUserIds).append(" "); - if (!canEditRole) { - auditLogMessage.append("and assigned them LEARNER role "); - } - if (!removedUserIds.isEmpty()) { - auditLogMessage.append("and "); - } + StringBuilder auditLogMessage = new StringBuilder(); + auditLogMessage.append("Added users ").append(getUserNamesForLog(addedUserIds)) + .append(" to organisation \"").append(organisation.getName()).append("\""); + AuditLogFilter.log(AuditLogFilter.USER_ENROLL_ACTION, auditLogMessage); } if (!removedUserIds.isEmpty()) { - auditLogMessage.append("removed users ").append(removedUserIds); + StringBuilder auditLogMessage = new StringBuilder(); + auditLogMessage.append("Removed users ").append(getUserNamesForLog(removedUserIds)) + .append(" from organisation \"").append(organisation.getName()).append("\""); + AuditLogFilter.log(AuditLogFilter.USER_UNENROLL_ACTION, auditLogMessage); } - auditLogMessage.append(" to/from organisation ").append(organisationId); + } - AuditLogFilter.log(auditLogMessage); + private String getUserNamesForLog(Collection userIds) { + StringBuilder userNames = new StringBuilder(); + for (Integer userId : userIds) { + User user = userManagementService.getUserById(userId); + userNames.append(user.getFirstName()).append(" ").append(user.getLastName()) + .append(" (").append(user.getLogin()).append("), "); + } + return userNames.delete(userNames.length() - 2, userNames.length()).toString(); } -} \ No newline at end of file +} Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java =================================================================== diff -u -r3f3f34c22194aeaf302e1fd332925dffd35019aa -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java (.../UserRolesSaveController.java) (revision 3f3f34c22194aeaf302e1fd332925dffd35019aa) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java (.../UserRolesSaveController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -129,7 +129,7 @@ userManagementService.save(user); } - auditLog(orgId, userId, roles); + auditLog(org, userId, roles); return "redirect:/usermanage.do?org=" + orgId; } @@ -140,11 +140,13 @@ return user != null ? user.getUserID() : null; } - private void auditLog(Integer organisationId, Integer userId, String[] roleIds) { + 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())); - StringBuilder auditLogMessage = new StringBuilder("assigned to user ").append(userId).append(" roles ") - .append(roles).append(" in organisation ").append(organisationId); - AuditLogFilter.log(auditLogMessage); + User targetUser = userManagementService.getUserById(userId); + 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_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserSaveController.java =================================================================== diff -u -r399fafea8d30e59f81414f332a7e8a5ed527aee4 -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserSaveController.java (.../UserSaveController.java) (revision 399fafea8d30e59f81414f332a7e8a5ed527aee4) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserSaveController.java (.../UserSaveController.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -46,6 +46,7 @@ import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.ValidationUtil; 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; @@ -204,6 +205,8 @@ user.setTheme(cssTheme); userManagementService.saveUser(user); + + AuditLogFilter.log(AuditLogFilter.USER_EDIT_ACTION, "user login: " + user.getLogin()); } else { // create user //password validation @@ -246,12 +249,15 @@ user.setTheme(theme); userManagementService.saveUser(user); + userManagementService.updatePassword(user, password); // make 'create user' audit log entry userManagementService.logUserCreated(user, appadmin); log.debug("user: " + user.toString()); + + AuditLogFilter.log(AuditLogFilter.USER_ADD_ACTION, "user login: " + user.getLogin()); } } } Index: lams_admin/web/integration/ltiConsumerList.jsp =================================================================== diff -u -r85121f2d5a0394c96ef2ad1859c22b82391279b7 -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 --- lams_admin/web/integration/ltiConsumerList.jsp (.../ltiConsumerList.jsp) (revision 85121f2d5a0394c96ef2ad1859c22b82391279b7) +++ lams_admin/web/integration/ltiConsumerList.jsp (.../ltiConsumerList.jsp) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) @@ -69,7 +69,7 @@   - +