diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml index 7b5f03018e..2a62aa660c 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml @@ -53,6 +53,7 @@ + @@ -65,6 +66,7 @@ + diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java index 4638409234..e45b86dee2 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java @@ -1503,31 +1503,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean json.put("fullName", entry.getFullName() == null ? "": entry.getFullName()); json.put("nodeRef", entry.getNodeRef() == null ? "": entry.getNodeRef()); - // TODO: Find another way for checking the event - if (entry.getEvent().equals("Create Person") && entry.getNodeRef() != null) - { - NodeRef nodeRef = entry.getNodeRef(); - String userName = null; - if(nodeService.exists(nodeRef)) - { - userName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_USERNAME); - } - json.put("nodeName", userName == null ? "": userName); - json.put("createPerson", true); - } - else if (entry.getEvent().equals("Delete Person") && entry.getNodeRef() != null) - { - if (entry.getBeforeProperties() != null) - { - String userName = (String) entry.getBeforeProperties().get(ContentModel.PROP_USERNAME); - json.put("nodeName", userName == null ? "" : userName); - } - json.put("deletePerson", true); - } - else - { - json.put("nodeName", entry.getNodeName() == null ? "": entry.getNodeName()); - } + setNodeName(entry, json); // TODO: Find another way for checking the event if (entry.getEvent().equals("Delete RM Object")) @@ -1586,6 +1562,65 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean } } + /** + * Update a JSON object with a node name for an audit event. + * + * @param entry The audit event. + * @param json The object to update. + * @throws JSONException If there is a problem updating the JSON. + */ + private void setNodeName(RecordsManagementAuditEntry entry, JSONObject json) throws JSONException + { + String nodeName = null; + if (entry.getNodeRef() != null) + { + // TODO: Find another way for checking the event + switch (entry.getEvent()) + { + case "Create Person": + if (entry.getAfterProperties() != null) + { + nodeName = (String) entry.getAfterProperties().get(ContentModel.PROP_USERNAME); + } + // This is needed as older audit events (pre-2.7) were created without PROP_USERNAME being set. + NodeRef nodeRef = entry.getNodeRef(); + if (nodeName == null && nodeService.exists(nodeRef)) + { + nodeName = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_USERNAME); + } + json.put("createPerson", true); + break; + + case "Delete Person": + if (entry.getBeforeProperties() != null) + { + nodeName = (String) entry.getBeforeProperties().get(ContentModel.PROP_USERNAME); + } + json.put("deletePerson", true); + break; + + case "Create User Group": + if (entry.getAfterProperties() != null) + { + nodeName = (String) entry.getAfterProperties().get(ContentModel.PROP_AUTHORITY_NAME); + } + break; + + case "Delete User Group": + if (entry.getBeforeProperties() != null) + { + nodeName = (String) entry.getBeforeProperties().get(ContentModel.PROP_AUTHORITY_NAME); + } + break; + + default: + nodeName = entry.getNodeName(); + break; + } + } + json.put("nodeName", nodeName == null ? "" : nodeName); + } + /** * Helper method to convert value to MLText * diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/CreatePersonAuditEvent.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/CreatePersonAuditEvent.java index d46103d0c9..e54683c1d0 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/CreatePersonAuditEvent.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/CreatePersonAuditEvent.java @@ -27,11 +27,18 @@ package org.alfresco.module.org_alfresco_module_rm.audit.event; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import org.alfresco.model.ContentModel; import org.alfresco.repo.node.NodeServicePolicies.OnCreateNodePolicy; import org.alfresco.repo.policy.annotation.Behaviour; import org.alfresco.repo.policy.annotation.BehaviourBean; import org.alfresco.repo.policy.annotation.BehaviourKind; import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.namespace.QName; /** * Audits person creation. @@ -42,17 +49,30 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef; @BehaviourBean public class CreatePersonAuditEvent extends AuditEvent implements OnCreateNodePolicy { + /** Node Service */ + private NodeService nodeService; + + /** + * Sets the node service + * + * @param nodeService nodeService to set + */ + public void setNodeService(NodeService nodeService) + { + this.nodeService = nodeService; + } + /** * @see org.alfresco.repo.node.NodeServicePolicies.OnCreateNodePolicy#onCreateNode(org.alfresco.service.cmr.repository.ChildAssociationRef) */ @Override - @Behaviour - ( - kind = BehaviourKind.CLASS, - type = "cm:person" - ) + @Behaviour(kind = BehaviourKind.CLASS, type = "cm:person") public void onCreateNode(ChildAssociationRef childAssocRef) { - recordsManagementAuditService.auditEvent(childAssocRef.getChildRef(), getName()); + Map auditProperties = new HashMap<>(); + auditProperties.put(ContentModel.PROP_USERNAME, + nodeService.getProperty(childAssocRef.getChildRef(), ContentModel.PROP_USERNAME)); + + recordsManagementAuditService.auditEvent(childAssocRef.getChildRef(), getName(), null, auditProperties); } } diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/CreateUserGroupAuditEvent.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/CreateUserGroupAuditEvent.java index 034e23061e..a80e8aab54 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/CreateUserGroupAuditEvent.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/CreateUserGroupAuditEvent.java @@ -26,11 +26,18 @@ */ package org.alfresco.module.org_alfresco_module_rm.audit.event; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import org.alfresco.model.ContentModel; import org.alfresco.repo.node.NodeServicePolicies.OnCreateNodePolicy; import org.alfresco.repo.policy.annotation.Behaviour; import org.alfresco.repo.policy.annotation.BehaviourBean; import org.alfresco.repo.policy.annotation.BehaviourKind; import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.namespace.QName; /** * Audits user group creation. @@ -41,10 +48,27 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef; @BehaviourBean public class CreateUserGroupAuditEvent extends AuditEvent implements OnCreateNodePolicy { + /** Node Service */ + private NodeService nodeService; + + /** + * Sets the node service + * + * @param nodeService nodeService to set + */ + public void setNodeService(NodeService nodeService) + { + this.nodeService = nodeService; + } + @Override @Behaviour(kind = BehaviourKind.CLASS, type = "cm:authorityContainer") public void onCreateNode(ChildAssociationRef childAssocRef) { - recordsManagementAuditService.auditEvent(childAssocRef.getChildRef(), getName()); + Map auditProperties = new HashMap<>(); + auditProperties.put(ContentModel.PROP_AUTHORITY_NAME, + nodeService.getProperty(childAssocRef.getChildRef(), ContentModel.PROP_AUTHORITY_NAME)); + + recordsManagementAuditService.auditEvent(childAssocRef.getChildRef(), getName(), null, auditProperties); } }