From 1bef29e80bc2f084fcff81e4f756da26e97eb7a0 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Tue, 20 Mar 2018 08:49:04 +0200 Subject: [PATCH 1/6] audit the cm:person beforeDeleteNode --- .../messages/audit-service.properties | 1 + .../rm-audit-context.xml | 7 ++ .../RecordsManagementAuditServiceImpl.java | 14 +++- .../audit/event/DeletePersonAuditEvent.java | 77 +++++++++++++++++++ 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/audit-service.properties b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/audit-service.properties index 7e55d72cc7..5f8a331f0a 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/audit-service.properties +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/audit-service.properties @@ -4,6 +4,7 @@ rm.audit.delete-object=Delete Object rm.audit.login-succeeded=Login Successful rm.audit.login-failed=Login Unsuccessful rm.audit.create-person=Create User +rm.audit.delete-person=Delete User rm.audit.linkTo=Link to rm.audit.moveTo=Move to rm.audit.copyTo=Copy to 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 61c53f3c6b..1a1b993d1a 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 @@ -57,6 +57,13 @@ + + + + + + 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 6d327e4b1b..ad9a301521 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 @@ -1494,6 +1494,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean { try { + logger.info("AUDIT ENTRY" + entry.toString()); JSONObject json = new JSONObject(); json.put("timestamp", entry.getTimestampString()); @@ -1514,6 +1515,17 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean json.put("nodeName", userName == null ? "": userName); json.put("createPerson", true); } + else if(entry.getEvent().equals("Delete Person") && entry.getNodeRef() != null) + { + entry.getBeforeProperties().get(ContentModel.PROP_USERNAME); + String userName = null; + if (entry.getBeforeProperties()!= null) + { + 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()); @@ -1567,7 +1579,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean } json.put("changedValues", changedValues); - + logger.info("Json valuse " + json.toString()); writer.write(json.toString()); } catch (JSONException je) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java new file mode 100644 index 0000000000..f50261fe58 --- /dev/null +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java @@ -0,0 +1,77 @@ +/* + * #%L + * Alfresco Records Management Module + * %% + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco 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 Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.module.org_alfresco_module_rm.audit.event; + +import java.io.Serializable; +import java.util.Map; + +import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy; +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.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.namespace.QName; + +/** + * Audits person deletion. + * + * @author Rodica Sutu + * @since 2.7 + */ +@BehaviourBean +public class DeletePersonAuditEvent extends AuditEvent implements BeforeDeleteNodePolicy +{ + + private NodeService nodeService; + + /** + * @param nodeService + */ + public void setNodeService(NodeService nodeService) + { + this.nodeService = nodeService; + } + /** + * @see org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy#(org.alfresco.service.cmr.repository.ChildAssociationRef) + */ + + @Override + @Behaviour + ( + kind = BehaviourKind.CLASS, + type = "cm:person" + ) + public void beforeDeleteNode(NodeRef nodeRef) + { + //audit the property values before the delete event + Map before = nodeService.getProperties(nodeRef); + recordsManagementAuditService.auditEvent(nodeRef, getName(), before, null, true, false); + } + + +} From 28f8c48dfa581e16a74d9929f95023b98491f055 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Tue, 20 Mar 2018 21:52:25 +0200 Subject: [PATCH 2/6] audit the delete person event on beforeDeleteNode --- .../rm-audit-context.xml | 2 +- .../RecordsManagementAuditServiceImpl.java | 18 +++++------------- .../audit/event/DeletePersonAuditEvent.java | 15 ++++----------- 3 files changed, 10 insertions(+), 25 deletions(-) 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 1a1b993d1a..2b47be2d8b 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 @@ -59,7 +59,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 ad9a301521..18be9f9997 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 @@ -1494,7 +1494,6 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean { try { - logger.info("AUDIT ENTRY" + entry.toString()); JSONObject json = new JSONObject(); json.put("timestamp", entry.getTimestampString()); @@ -1515,17 +1514,6 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean json.put("nodeName", userName == null ? "": userName); json.put("createPerson", true); } - else if(entry.getEvent().equals("Delete Person") && entry.getNodeRef() != null) - { - entry.getBeforeProperties().get(ContentModel.PROP_USERNAME); - String userName = null; - if (entry.getBeforeProperties()!= null) - { - 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()); @@ -1537,6 +1525,11 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean json.put("deleteObject", true); } + if (entry.getEvent().equals("Delete Person") && entry.getNodeRef() != null) + { + json.put("deletePerson", true); + } + json.put("nodeType", entry.getNodeType() == null ? "": entry.getNodeType()); json.put("event", entry.getEvent() == null ? "": getAuditEventLabel(entry.getEvent())); json.put("identifier", entry.getIdentifier() == null ? "": entry.getIdentifier()); @@ -1579,7 +1572,6 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean } json.put("changedValues", changedValues); - logger.info("Json valuse " + json.toString()); writer.write(json.toString()); } catch (JSONException je) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java index f50261fe58..8e350965dc 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java @@ -26,16 +26,11 @@ */ package org.alfresco.module.org_alfresco_module_rm.audit.event; -import java.io.Serializable; -import java.util.Map; - import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy; 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.NodeRef; -import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.namespace.QName; /** * Audits person deletion. @@ -46,16 +41,14 @@ import org.alfresco.service.namespace.QName; @BehaviourBean public class DeletePersonAuditEvent extends AuditEvent implements BeforeDeleteNodePolicy { - +/* private NodeService nodeService; - /** - * @param nodeService - */ public void setNodeService(NodeService nodeService) { this.nodeService = nodeService; } + */ /** * @see org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy#(org.alfresco.service.cmr.repository.ChildAssociationRef) */ @@ -69,8 +62,8 @@ public class DeletePersonAuditEvent extends AuditEvent implements BeforeDeleteNo public void beforeDeleteNode(NodeRef nodeRef) { //audit the property values before the delete event - Map before = nodeService.getProperties(nodeRef); - recordsManagementAuditService.auditEvent(nodeRef, getName(), before, null, true, false); + // Map before = nodeService.getProperties(nodeRef); + recordsManagementAuditService.auditEvent(nodeRef, getName(), null, null, true, false); } From 54203553c2fbe50aaa75a629721abbdc8ea61259 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Wed, 21 Mar 2018 23:06:48 +0200 Subject: [PATCH 3/6] audit the properties specific to cm:person before deleting the node in order to provide information about the delete user --- .../rm-audit-context.xml | 3 +- .../RecordsManagementAuditServiceImpl.java | 15 +++++--- .../audit/event/DeletePersonAuditEvent.java | 36 ++++++++++++++++--- 3 files changed, 44 insertions(+), 10 deletions(-) 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 2b47be2d8b..0d0d0f2457 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 @@ -59,7 +59,8 @@ - + + 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 18be9f9997..812d2e7a3c 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 @@ -1514,6 +1514,16 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean json.put("nodeName", userName == null ? "": userName); json.put("createPerson", true); } + else if (entry.getEvent().equals("Delete Person") && entry.getNodeRef() != null) + { + String userName = null; + if (entry.getBeforeProperties() != null) + { + 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()); @@ -1525,11 +1535,6 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean json.put("deleteObject", true); } - if (entry.getEvent().equals("Delete Person") && entry.getNodeRef() != null) - { - json.put("deletePerson", true); - } - json.put("nodeType", entry.getNodeType() == null ? "": entry.getNodeType()); json.put("event", entry.getEvent() == null ? "": getAuditEventLabel(entry.getEvent())); json.put("identifier", entry.getIdentifier() == null ? "": entry.getIdentifier()); diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java index 8e350965dc..33e73d335b 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java @@ -26,11 +26,20 @@ */ package org.alfresco.module.org_alfresco_module_rm.audit.event; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.alfresco.model.ContentModel; import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy; 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.dictionary.DictionaryService; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.namespace.QName; /** * Audits person deletion. @@ -41,14 +50,21 @@ import org.alfresco.service.cmr.repository.NodeRef; @BehaviourBean public class DeletePersonAuditEvent extends AuditEvent implements BeforeDeleteNodePolicy { -/* + private NodeService nodeService; + private DictionaryService dictionaryService; + public void setNodeService(NodeService nodeService) { this.nodeService = nodeService; } - */ + + public void setDictionaryService(DictionaryService dictionaryService) + { + this.dictionaryService = dictionaryService; + } + /** * @see org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy#(org.alfresco.service.cmr.repository.ChildAssociationRef) */ @@ -61,9 +77,21 @@ public class DeletePersonAuditEvent extends AuditEvent implements BeforeDeleteNo ) public void beforeDeleteNode(NodeRef nodeRef) { + //get the cm:person properties + Set properties = dictionaryService.getPropertyDefs(ContentModel.TYPE_PERSON).keySet(); + //retrive the properties and the values + Map result = new HashMap<>(); + for (QName property : properties) + { + Serializable values = nodeService.getProperty(nodeRef, property); + if (values != null) + { + result.put(property, values); + } + } + //audit the property values before the delete event - // Map before = nodeService.getProperties(nodeRef); - recordsManagementAuditService.auditEvent(nodeRef, getName(), null, null, true, false); + recordsManagementAuditService.auditEvent(nodeRef, getName(), result, null, true, false); } From 1d7fba03e1649a3dfe1a16cd3cf672d2c4844ca1 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Fri, 23 Mar 2018 08:59:29 +0200 Subject: [PATCH 4/6] test to cover the audit event for user deletion --- ...RecordsManagementAuditServiceImplTest.java | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java index 79ad3909f5..65bc288e2c 100644 --- a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java +++ b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java @@ -33,6 +33,8 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Set; +import java.util.stream.Stream; import org.alfresco.model.ContentModel; import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditEntry; @@ -459,6 +461,69 @@ public class RecordsManagementAuditServiceImplTest extends BaseRMTestCase assertTrue("Expected to hit successful login attempt for Charles Dickons (cdickons)", found); } + /** + * Given I have deleted a user + * When I will get the RM audit filter by delete user event + * Then there will be an entry for the deleted user + * And the audit entry has the properties specific to cm:person type audited + * @throws Exception + */ + @org.junit.Test + public void testAuditForDeletedUser() throws Exception + { + doBehaviourDrivenTest(new BehaviourDrivenTest() + { + final static String DELETE_USER_AUDIT_EVENT = "Delete Person"; + String userName = "auditDeleteUser"; + NodeRef user; + long nrOfPropertiesAudited; + List entry; + + @Override + public void given() throws Exception + { + // create a user + user = createPerson(userName); + // count the cm:person properties with non null values + nrOfPropertiesAudited = dictionaryService.getPropertyDefs(ContentModel.TYPE_PERSON).keySet() + .stream().filter(prop -> nodeService.getProperty(user, prop) != null) + .count(); + personService.deletePerson(userName); + } + + @Override + public void when() throws Exception + { + // set the audit wuery param + RecordsManagementAuditQueryParameters params = new RecordsManagementAuditQueryParameters(); + params.setEvent(DELETE_USER_AUDIT_EVENT); + + // get the audit events for "Delete Person" + entry = getAuditTrail(params, 1, ADMIN_USER); + + } + + @Override + public void then() throws Exception + { + assertEquals("Delete user event is not audited.", DELETE_USER_AUDIT_EVENT, entry.get(0).getEvent()); + assertEquals(user.getId(), entry.get(0).getNodeName()); + assertEquals("Unexpected nr of properties audited for cm:person type when deleting a user.", + nrOfPropertiesAudited, entry.get(0).getBeforeProperties().size()); + assertEquals("Wrong value for username property is audited", + userName, entry.get(0).getBeforeProperties().get(ContentModel.PROP_USERNAME)); + } + @Override + public void after() + { + // Stop and delete all entries + rmAuditService.stopAuditLog(filePlan); + rmAuditService.clearAuditLog(filePlan); + } + + }); + } + /** === Helper methods === */ private List getAuditTrail(String asUser) From 5c860eab69df2f3a3978c86f0386db966d640294 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Fri, 23 Mar 2018 17:28:21 +0200 Subject: [PATCH 5/6] review changes --- .../rm-audit-context.xml | 1 - .../RecordsManagementAuditServiceImpl.java | 5 +-- .../audit/event/DeletePersonAuditEvent.java | 38 +++++++------------ ...RecordsManagementAuditServiceImplTest.java | 10 +---- 4 files changed, 17 insertions(+), 37 deletions(-) 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 0d0d0f2457..1a1b993d1a 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 @@ -59,7 +59,6 @@ - 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 812d2e7a3c..69d7631997 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 @@ -1516,12 +1516,11 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean } else if (entry.getEvent().equals("Delete Person") && entry.getNodeRef() != null) { - String userName = null; if (entry.getBeforeProperties() != null) { - userName = (String) entry.getBeforeProperties().get(ContentModel.PROP_USERNAME); + String userName = (String) entry.getBeforeProperties().get(ContentModel.PROP_USERNAME); + json.put("nodeName", userName == null ? "" : userName); } - json.put("nodeName", userName == null ? "" : userName); json.put("deletePerson", true); } else diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java index 33e73d335b..9d92e9e41b 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java @@ -29,14 +29,12 @@ package org.alfresco.module.org_alfresco_module_rm.audit.event; import java.io.Serializable; import java.util.HashMap; import java.util.Map; -import java.util.Set; import org.alfresco.model.ContentModel; import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy; 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.dictionary.DictionaryService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.namespace.QName; @@ -50,25 +48,24 @@ import org.alfresco.service.namespace.QName; @BehaviourBean public class DeletePersonAuditEvent extends AuditEvent implements BeforeDeleteNodePolicy { - + /** Node Service*/ private NodeService nodeService; - private DictionaryService dictionaryService; - + /** + * Sets the node service + * + * @param nodeService nodeService to set + */ public void setNodeService(NodeService nodeService) { this.nodeService = nodeService; } - public void setDictionaryService(DictionaryService dictionaryService) - { - this.dictionaryService = dictionaryService; - } - /** - * @see org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy#(org.alfresco.service.cmr.repository.ChildAssociationRef) + * Behaviour that will audit cm:person type when the user is deletedF + * @param nodeRef the node to be deleted + * */ - @Override @Behaviour ( @@ -77,21 +74,12 @@ public class DeletePersonAuditEvent extends AuditEvent implements BeforeDeleteNo ) public void beforeDeleteNode(NodeRef nodeRef) { - //get the cm:person properties - Set properties = dictionaryService.getPropertyDefs(ContentModel.TYPE_PERSON).keySet(); - //retrive the properties and the values - Map result = new HashMap<>(); - for (QName property : properties) - { - Serializable values = nodeService.getProperty(nodeRef, property); - if (values != null) - { - result.put(property, values); - } - } + //retrieve the username property to be audited + Map userName = new HashMap<>(); + userName.put(ContentModel.PROP_USERNAME, nodeService.getProperty(nodeRef, ContentModel.PROP_USERNAME)); //audit the property values before the delete event - recordsManagementAuditService.auditEvent(nodeRef, getName(), result, null, true, false); + recordsManagementAuditService.auditEvent(nodeRef, getName(), userName, null, true, false); } diff --git a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java index 65bc288e2c..73980dbb58 100644 --- a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java +++ b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/RecordsManagementAuditServiceImplTest.java @@ -465,7 +465,7 @@ public class RecordsManagementAuditServiceImplTest extends BaseRMTestCase * Given I have deleted a user * When I will get the RM audit filter by delete user event * Then there will be an entry for the deleted user - * And the audit entry has the properties specific to cm:person type audited + * And the audit entry has the username property value audited * @throws Exception */ @org.junit.Test @@ -476,7 +476,6 @@ public class RecordsManagementAuditServiceImplTest extends BaseRMTestCase final static String DELETE_USER_AUDIT_EVENT = "Delete Person"; String userName = "auditDeleteUser"; NodeRef user; - long nrOfPropertiesAudited; List entry; @Override @@ -484,10 +483,6 @@ public class RecordsManagementAuditServiceImplTest extends BaseRMTestCase { // create a user user = createPerson(userName); - // count the cm:person properties with non null values - nrOfPropertiesAudited = dictionaryService.getPropertyDefs(ContentModel.TYPE_PERSON).keySet() - .stream().filter(prop -> nodeService.getProperty(user, prop) != null) - .count(); personService.deletePerson(userName); } @@ -500,7 +495,6 @@ public class RecordsManagementAuditServiceImplTest extends BaseRMTestCase // get the audit events for "Delete Person" entry = getAuditTrail(params, 1, ADMIN_USER); - } @Override @@ -509,7 +503,7 @@ public class RecordsManagementAuditServiceImplTest extends BaseRMTestCase assertEquals("Delete user event is not audited.", DELETE_USER_AUDIT_EVENT, entry.get(0).getEvent()); assertEquals(user.getId(), entry.get(0).getNodeName()); assertEquals("Unexpected nr of properties audited for cm:person type when deleting a user.", - nrOfPropertiesAudited, entry.get(0).getBeforeProperties().size()); + 1, entry.get(0).getBeforeProperties().size()); assertEquals("Wrong value for username property is audited", userName, entry.get(0).getBeforeProperties().get(ContentModel.PROP_USERNAME)); } From 3bc1e0471764b5555470df6920eb1a15e539dbd7 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Fri, 23 Mar 2018 17:31:02 +0200 Subject: [PATCH 6/6] minor java docs update --- .../audit/event/DeletePersonAuditEvent.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java index 9d92e9e41b..d3ec8aaafb 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java @@ -62,10 +62,12 @@ public class DeletePersonAuditEvent extends AuditEvent implements BeforeDeleteNo } /** - * Behaviour that will audit cm:person type when the user is deletedF + * Behaviour that will audit user deletion + * * @param nodeRef the node to be deleted * */ + @Override @Behaviour (