mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-5236 Audit user group events.
Add audit events for user group creation and deletion. Also update the create user event so that the username is still displayed after the user is deleted.
This commit is contained in:
@@ -53,6 +53,7 @@
|
|||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="audit-event.create-person" parent="audit-event" class="org.alfresco.module.org_alfresco_module_rm.audit.event.CreatePersonAuditEvent">
|
<bean id="audit-event.create-person" parent="audit-event" class="org.alfresco.module.org_alfresco_module_rm.audit.event.CreatePersonAuditEvent">
|
||||||
|
<property name="nodeService" ref="nodeService" />
|
||||||
<property name="name" value="Create Person"/>
|
<property name="name" value="Create Person"/>
|
||||||
<property name="label" value="rm.audit.create-person"/>
|
<property name="label" value="rm.audit.create-person"/>
|
||||||
</bean>
|
</bean>
|
||||||
@@ -65,6 +66,7 @@
|
|||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="audit-event.create-userGroup" parent="audit-event" class="org.alfresco.module.org_alfresco_module_rm.audit.event.CreateUserGroupAuditEvent">
|
<bean id="audit-event.create-userGroup" parent="audit-event" class="org.alfresco.module.org_alfresco_module_rm.audit.event.CreateUserGroupAuditEvent">
|
||||||
|
<property name="nodeService" ref="nodeService" />
|
||||||
<property name="name" value="Create User Group"/>
|
<property name="name" value="Create User Group"/>
|
||||||
<property name="label" value="rm.audit.create-userGroup"/>
|
<property name="label" value="rm.audit.create-userGroup"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
@@ -1503,31 +1503,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean
|
|||||||
json.put("fullName", entry.getFullName() == null ? "": entry.getFullName());
|
json.put("fullName", entry.getFullName() == null ? "": entry.getFullName());
|
||||||
json.put("nodeRef", entry.getNodeRef() == null ? "": entry.getNodeRef());
|
json.put("nodeRef", entry.getNodeRef() == null ? "": entry.getNodeRef());
|
||||||
|
|
||||||
// TODO: Find another way for checking the event
|
setNodeName(entry, json);
|
||||||
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());
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Find another way for checking the event
|
// TODO: Find another way for checking the event
|
||||||
if (entry.getEvent().equals("Delete RM Object"))
|
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
|
* Helper method to convert value to MLText
|
||||||
*
|
*
|
||||||
|
@@ -27,11 +27,18 @@
|
|||||||
|
|
||||||
package org.alfresco.module.org_alfresco_module_rm.audit.event;
|
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.node.NodeServicePolicies.OnCreateNodePolicy;
|
||||||
import org.alfresco.repo.policy.annotation.Behaviour;
|
import org.alfresco.repo.policy.annotation.Behaviour;
|
||||||
import org.alfresco.repo.policy.annotation.BehaviourBean;
|
import org.alfresco.repo.policy.annotation.BehaviourBean;
|
||||||
import org.alfresco.repo.policy.annotation.BehaviourKind;
|
import org.alfresco.repo.policy.annotation.BehaviourKind;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
|
import org.alfresco.service.namespace.QName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Audits person creation.
|
* Audits person creation.
|
||||||
@@ -42,17 +49,30 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
|||||||
@BehaviourBean
|
@BehaviourBean
|
||||||
public class CreatePersonAuditEvent extends AuditEvent implements OnCreateNodePolicy
|
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)
|
* @see org.alfresco.repo.node.NodeServicePolicies.OnCreateNodePolicy#onCreateNode(org.alfresco.service.cmr.repository.ChildAssociationRef)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Behaviour
|
@Behaviour(kind = BehaviourKind.CLASS, type = "cm:person")
|
||||||
(
|
|
||||||
kind = BehaviourKind.CLASS,
|
|
||||||
type = "cm:person"
|
|
||||||
)
|
|
||||||
public void onCreateNode(ChildAssociationRef childAssocRef)
|
public void onCreateNode(ChildAssociationRef childAssocRef)
|
||||||
{
|
{
|
||||||
recordsManagementAuditService.auditEvent(childAssocRef.getChildRef(), getName());
|
Map<QName, Serializable> auditProperties = new HashMap<>();
|
||||||
|
auditProperties.put(ContentModel.PROP_USERNAME,
|
||||||
|
nodeService.getProperty(childAssocRef.getChildRef(), ContentModel.PROP_USERNAME));
|
||||||
|
|
||||||
|
recordsManagementAuditService.auditEvent(childAssocRef.getChildRef(), getName(), null, auditProperties);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -26,11 +26,18 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.module.org_alfresco_module_rm.audit.event;
|
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.node.NodeServicePolicies.OnCreateNodePolicy;
|
||||||
import org.alfresco.repo.policy.annotation.Behaviour;
|
import org.alfresco.repo.policy.annotation.Behaviour;
|
||||||
import org.alfresco.repo.policy.annotation.BehaviourBean;
|
import org.alfresco.repo.policy.annotation.BehaviourBean;
|
||||||
import org.alfresco.repo.policy.annotation.BehaviourKind;
|
import org.alfresco.repo.policy.annotation.BehaviourKind;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
|
import org.alfresco.service.namespace.QName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Audits user group creation.
|
* Audits user group creation.
|
||||||
@@ -41,10 +48,27 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
|||||||
@BehaviourBean
|
@BehaviourBean
|
||||||
public class CreateUserGroupAuditEvent extends AuditEvent implements OnCreateNodePolicy
|
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
|
@Override
|
||||||
@Behaviour(kind = BehaviourKind.CLASS, type = "cm:authorityContainer")
|
@Behaviour(kind = BehaviourKind.CLASS, type = "cm:authorityContainer")
|
||||||
public void onCreateNode(ChildAssociationRef childAssocRef)
|
public void onCreateNode(ChildAssociationRef childAssocRef)
|
||||||
{
|
{
|
||||||
recordsManagementAuditService.auditEvent(childAssocRef.getChildRef(), getName());
|
Map<QName, Serializable> auditProperties = new HashMap<>();
|
||||||
|
auditProperties.put(ContentModel.PROP_AUTHORITY_NAME,
|
||||||
|
nodeService.getProperty(childAssocRef.getChildRef(), ContentModel.PROP_AUTHORITY_NAME));
|
||||||
|
|
||||||
|
recordsManagementAuditService.auditEvent(childAssocRef.getChildRef(), getName(), null, auditProperties);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user