Index: lams_admin/src/java/org/lamsfoundation/lams/admin/AdminConstants.java =================================================================== diff -u --- lams_admin/src/java/org/lamsfoundation/lams/admin/AdminConstants.java (revision 0) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/AdminConstants.java (revision a4032a595915440add6565c15cd55711da942dc1) @@ -0,0 +1,31 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.admin; + +public class AdminConstants { + + public static final String MODULE_NAME = "admin"; + +} Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/OrgSaveAction.java =================================================================== diff -u -rdb819f6935b954c85b1c3592e81a344f69e170cd -ra4032a595915440add6565c15cd55711da942dc1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/OrgSaveAction.java (.../OrgSaveAction.java) (revision db819f6935b954c85b1c3592e81a344f69e170cd) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/OrgSaveAction.java (.../OrgSaveAction.java) (revision a4032a595915440add6565c15cd55711da942dc1) @@ -35,12 +35,14 @@ import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.action.DynaActionForm; +import org.lamsfoundation.lams.admin.AdminConstants; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationState; import org.lamsfoundation.lams.usermanagement.OrganisationType; import org.lamsfoundation.lams.usermanagement.SupportedLocale; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.audit.IAuditService; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.web.context.WebApplicationContext; @@ -101,9 +103,11 @@ HttpSession ss = SessionManager.getSession(); UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); SupportedLocale locale = (SupportedLocale)getService().findById(SupportedLocale.class,(Byte)orgForm.get("localeId")); + OrganisationState state = (OrganisationState)getService().findById(OrganisationState.class,(Integer)orgForm.get("stateId")); if(orgId!=0){ org = (Organisation)getService().findById(Organisation.class,orgId); + writeAuditLog(org, orgForm, state, locale); BeanUtils.copyProperties(org,orgForm); org.setLocale(locale); }else{ @@ -112,10 +116,11 @@ org.setLocale(locale); org.setParentOrganisation((Organisation)getService().findById(Organisation.class,(Integer)orgForm.get("parentId"))); org.setOrganisationType((OrganisationType)getService().findById(OrganisationType.class,(Integer)orgForm.get("typeId"))); + writeAuditLog(org, orgForm, org.getOrganisationState(), org.getLocale()); } log.debug("orgId:"+org.getOrganisationId()+" locale:"+org.getLocale()+" create date:"+org.getCreateDate()); - org.setOrganisationState((OrganisationState)getService().findById(OrganisationState.class,(Integer)orgForm.get("stateId"))); + org.setOrganisationState(state); org = getService().saveOrganisation(org, user.getUserID()); request.setAttribute("org",orgForm.get("parentId")); @@ -126,6 +131,57 @@ } } + private void writeAuditLog(Organisation org, DynaActionForm orgForm, OrganisationState newState, SupportedLocale newLocale) { + + WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); + IAuditService auditService = (IAuditService) ctx.getBean("auditService"); + + // audit log entries for organisation attribute changes + if((Integer)orgForm.get("orgId")!=0) { + if(!org.getOrganisationState().getOrganisationStateId().equals((Integer)orgForm.get("stateId"))) { + auditService.log(AdminConstants.MODULE_NAME, "Changed state for organisation: "+org.getName() + +"("+org.getOrganisationId()+") from: "+org.getOrganisationState().getDescription() + +" to: "+newState.getDescription()); + } + if(!org.getName().equals((String)orgForm.get("name"))) { + auditService.log(AdminConstants.MODULE_NAME, "Changed name for organisation: "+org.getName() + +"("+org.getOrganisationId()+") from: "+org.getName()+" to: "+orgForm.get("name")); + } + if(!org.getCode().equals((String)orgForm.get("code"))) { + auditService.log(AdminConstants.MODULE_NAME, "Changed code for organisation: "+org.getName() + +"("+org.getOrganisationId()+") from: "+org.getCode()+" to: "+orgForm.get("code")); + } + if(!org.getDescription().equals((String)orgForm.getString("description"))) { + auditService.log(AdminConstants.MODULE_NAME, "Changed description for organisation: "+org.getName() + +"("+org.getOrganisationId()+") from: "+org.getDescription()+" to: "+orgForm.getString("description")); + } + if(!org.getCourseAdminCanAddNewUsers().equals((Boolean)orgForm.get("courseAdminCanAddNewUsers"))) { + auditService.log(AdminConstants.MODULE_NAME, "Changed courseAdminCanAddNewUsers for organisation: "+org.getName() + +"("+org.getOrganisationId()+") from: "+org.getCourseAdminCanAddNewUsers()+" to: "+orgForm.get("courseAdminCanAddNewUsers")); + } + if(!org.getCourseAdminCanBrowseAllUsers().equals((Boolean)orgForm.get("courseAdminCanBrowseAllUsers"))) { + auditService.log(AdminConstants.MODULE_NAME, "Changed courseAdminCanBrowseAllUsers for organisation: "+org.getName() + +"("+org.getOrganisationId()+") from: "+org.getCourseAdminCanBrowseAllUsers()+" to: "+orgForm.get("courseAdminCanBrowseAllUsers")); + } + if(!org.getCourseAdminCanChangeStatusOfCourse().equals((Boolean)orgForm.get("courseAdminCanChangeStatusOfCourse"))) { + auditService.log(AdminConstants.MODULE_NAME, "Changed courseAdminCanChangeStatusOfCourse for organisation: "+org.getName() + +"("+org.getOrganisationId()+") from: "+org.getCourseAdminCanChangeStatusOfCourse()+" to: "+orgForm.get("courseAdminCanChangeStatusOfCourse")); + } + /* this field not set yet + if(!org.getCourseAdminCanCreateGuestAccounts().equals((Boolean)orgForm.get("courseAdminCanCreateGuestAccounts"))) { + auditService.log(AdminConstants.MODULE_NAME, "Changed courseAdminCanCreateGuestAccounts for organisation: "+org.getName() + +"("+org.getOrganisationId()+") from: "+org.getCourseAdminCanCreateGuestAccounts()+" to: "+orgForm.get("courseAdminCanCreateGuestAccounts")); + }*/ + if(!org.getLocale().getLocaleId().equals((Byte)orgForm.get("localeId"))) { + auditService.log(AdminConstants.MODULE_NAME, "Changed locale for organisation: "+org.getName() + +"("+org.getOrganisationId()+") from: "+org.getLocale().getDescription()+" to: "+newLocale.getDescription()); + } + } else { + auditService.log(AdminConstants.MODULE_NAME, "Created organisation: "+org.getName() + +"("+org.getOrganisationId()+") of type: "+org.getOrganisationType().getName()); + } + } + private IUserManagementService getService(){ if(service==null){ WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java =================================================================== diff -u -ra2e0d660d0c50a18dd23de83d3f14ae98e2695c9 -ra4032a595915440add6565c15cd55711da942dc1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java (.../UserAction.java) (revision a2e0d660d0c50a18dd23de83d3f14ae98e2695c9) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java (.../UserAction.java) (revision a4032a595915440add6565c15cd55711da942dc1) @@ -28,7 +28,6 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; -import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -41,21 +40,20 @@ import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.action.DynaActionForm; +import org.lamsfoundation.lams.admin.AdminConstants; 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.UserOrganisationRole; -import org.lamsfoundation.lams.usermanagement.Workspace; -import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; -import org.lamsfoundation.lams.usermanagement.WorkspaceWorkspaceFolder; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.util.audit.IAuditService; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -83,6 +81,7 @@ private static Logger log = Logger.getLogger(UserAction.class); private static IUserManagementService service; private static MessageService messageService; + private static IAuditService auditService; private static List rolelist; private static List locales; @@ -194,6 +193,8 @@ Integer orgId = WebUtil.readIntParam(request,"orgId"); Integer userId = WebUtil.readIntParam(request,"userId",true); getService().disableUser(userId); + getAuditService().log(AdminConstants.MODULE_NAME, "Disabled userId: "+userId); + request.setAttribute("org",orgId); return mapping.findForward("userlist"); } @@ -218,6 +219,8 @@ request.setAttribute("errorMessage",e.getMessage()); return mapping.findForward("error"); } + getAuditService().log(AdminConstants.MODULE_NAME, "Deleted userId: "+userId); + request.setAttribute("org",orgId); return mapping.findForward("userlist"); } @@ -281,4 +284,12 @@ } return messageService; } + + private IAuditService getAuditService(){ + if(auditService==null){ + WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); + auditService = (IAuditService)ctx.getBean("auditService"); + } + return auditService; + } } \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSaveAction.java =================================================================== diff -u -r204711e1cc2825167be9050ef0837118411a2cf6 -ra4032a595915440add6565c15cd55711da942dc1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSaveAction.java (.../UserSaveAction.java) (revision 204711e1cc2825167be9050ef0837118411a2cf6) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSaveAction.java (.../UserSaveAction.java) (revision a4032a595915440add6565c15cd55711da942dc1) @@ -43,6 +43,7 @@ import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.action.DynaActionForm; +import org.lamsfoundation.lams.admin.AdminConstants; import org.lamsfoundation.lams.themes.CSSThemeVisualElement; import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; import org.lamsfoundation.lams.usermanagement.Organisation; @@ -56,6 +57,7 @@ import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.HashUtil; +import org.lamsfoundation.lams.util.audit.IAuditService; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -124,12 +126,17 @@ SupportedLocale locale = (SupportedLocale) getService().findById(SupportedLocale.class, (Byte)userForm.get("localeId")); log.debug("locale: " + locale); + WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); + IAuditService auditService = (IAuditService) ctx.getBean("auditService"); + if (errors.isEmpty()) { String[] roles = (String[]) userForm.get("roles"); if (edit) { // edit user log.debug("editing userId: " + userId); User user = (User)getService().findById(User.class, userId); if (passwordChanged) { + // make 'password changed' audit log entry + auditService.log(AdminConstants.MODULE_NAME, "Password changed for: "+user.getLogin()+"("+userId+")"); userForm.set("password", HashUtil.sha1((String) userForm.get("password"))); } else { userForm.set("password", user.getPassword()); @@ -195,6 +202,11 @@ user.setUserId(null); user.setLocale(locale); getService().save(user); + + // make 'create user' audit log entry + auditService.log(AdminConstants.MODULE_NAME, "Created user: "+user.getLogin() + +"("+user.getUserId()+"), Full Name: "+user.getFullName()); + log.debug("user: " + user.toString()); List orgs = new ArrayList(); // if user is to be added to a class, make user a member of @@ -251,4 +263,5 @@ } return service; } + }