RM-678: Can't create non-electronic record

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@49913 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Roy Wetherall
2013-05-10 04:59:39 +00:00
parent 3d3ebef858
commit 086af31608
4 changed files with 115 additions and 40 deletions

View File

@@ -237,4 +237,17 @@
</property> </property>
</bean> </bean>
<bean id="FormService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager"><ref bean="authenticationManager"/></property>
<property name="accessDecisionManager"><ref bean="accessDecisionManager"/></property>
<property name="afterInvocationManager"><ref bean="afterInvocationManager"/></property>
<property name="objectDefinitionSource">
<value>
org.alfresco.repo.forms.FormService.getForm=ACL_ALLOW
org.alfresco.repo.forms.FormService.saveForm=ACL_ALLOW
org.alfresco.repo.forms.FormService.*=ACL_DENY
</value>
</property>
</bean>
</beans> </beans>

View File

@@ -226,4 +226,10 @@ rm.methodsecurity.org.alfresco.service.cmr.site.SiteService.listSites=RM_ALLOW,A
rm.methodsecurity.org.alfresco.service.cmr.site.SiteService.removeMembership=RM_ALLOW rm.methodsecurity.org.alfresco.service.cmr.site.SiteService.removeMembership=RM_ALLOW
rm.methodsecurity.org.alfresco.service.cmr.site.SiteService.setMembership=RM_ALLOW rm.methodsecurity.org.alfresco.service.cmr.site.SiteService.setMembership=RM_ALLOW
rm.methodsecurity.org.alfresco.service.cmr.site.SiteService.updateSite=RM_ALLOW rm.methodsecurity.org.alfresco.service.cmr.site.SiteService.updateSite=RM_ALLOW
rm.methodsecurity.org.alfresco.service.cmr.site.SiteService.*=ACL_DENY rm.methodsecurity.org.alfresco.service.cmr.site.SiteService.*=RM_DENY
## Form Service
rm.methodsecurity.org.alfresco.repo.forms.FormService.getForm=RM_ALLOW
rm.methodsecurity.org.alfresco.repo.forms.FormService.saveForm=RM_ALLOW
rm.methodsecurity.org.alfresco.repo.forms.FormService.*=RM_DENY

View File

@@ -54,10 +54,12 @@ import org.alfresco.repo.dictionary.M2Model;
import org.alfresco.repo.dictionary.M2Namespace; import org.alfresco.repo.dictionary.M2Namespace;
import org.alfresco.repo.dictionary.M2Property; import org.alfresco.repo.dictionary.M2Property;
import org.alfresco.repo.node.NodeServicePolicies; import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.policy.ClassPolicyDelegate; import org.alfresco.repo.policy.ClassPolicyDelegate;
import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.service.cmr.dictionary.AspectDefinition; import org.alfresco.service.cmr.dictionary.AspectDefinition;
import org.alfresco.service.cmr.dictionary.AssociationDefinition; import org.alfresco.service.cmr.dictionary.AssociationDefinition;
import org.alfresco.service.cmr.dictionary.Constraint; import org.alfresco.service.cmr.dictionary.Constraint;
@@ -245,6 +247,12 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
policy.beforeRemoveReference(fromNodeRef, toNodeRef, reference); policy.beforeRemoveReference(fromNodeRef, toNodeRef, reference);
} }
/**
*
* @param fromNodeRef
* @param toNodeRef
* @param reference
*/
protected void invokeOnRemoveReference(NodeRef fromNodeRef, NodeRef toNodeRef, QName reference) protected void invokeOnRemoveReference(NodeRef fromNodeRef, NodeRef toNodeRef, QName reference)
{ {
// get qnames to invoke against // get qnames to invoke against
@@ -254,8 +262,16 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
policy.onRemoveReference(fromNodeRef, toNodeRef, reference); policy.onRemoveReference(fromNodeRef, toNodeRef, reference);
} }
/**
* @see org.alfresco.repo.node.NodeServicePolicies.OnAddAspectPolicy#onAddAspect(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
*/
@Override @Override
public void onAddAspect(NodeRef nodeRef, QName aspectTypeQName) public void onAddAspect(final NodeRef nodeRef, final QName aspectTypeQName)
{
AuthenticationUtil.runAs(new RunAsWork<Void>()
{
@Override
public Void doWork() throws Exception
{ {
if (nodeService.exists(nodeRef) == true && if (nodeService.exists(nodeRef) == true &&
isCustomisable(aspectTypeQName) == true) isCustomisable(aspectTypeQName) == true)
@@ -263,10 +279,22 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
QName customPropertyAspect = getCustomAspect(aspectTypeQName); QName customPropertyAspect = getCustomAspect(aspectTypeQName);
nodeService.addAspect(nodeRef, customPropertyAspect, null); nodeService.addAspect(nodeRef, customPropertyAspect, null);
} }
return null;
}
}, AuthenticationUtil.getSystemUserName());
} }
/**
* @see org.alfresco.repo.node.NodeServicePolicies.OnRemoveAspectPolicy#onRemoveAspect(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
*/
@Override @Override
public void onRemoveAspect(NodeRef nodeRef, QName aspectTypeQName) public void onRemoveAspect(final NodeRef nodeRef, final QName aspectTypeQName)
{
AuthenticationUtil.runAs(new RunAsWork<Void>()
{
@Override
public Void doWork() throws Exception
{ {
if (nodeService.exists(nodeRef) == true && if (nodeService.exists(nodeRef) == true &&
isCustomisable(aspectTypeQName) == true) isCustomisable(aspectTypeQName) == true)
@@ -274,10 +302,24 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
QName customPropertyAspect = getCustomAspect(aspectTypeQName); QName customPropertyAspect = getCustomAspect(aspectTypeQName);
nodeService.removeAspect(nodeRef, customPropertyAspect); nodeService.removeAspect(nodeRef, customPropertyAspect);
} }
return null;
}
}, AuthenticationUtil.getSystemUserName());
} }
/**
* Make sure any custom property aspects are applied to newly created nodes.
*
* @see org.alfresco.repo.node.NodeServicePolicies.OnCreateNodePolicy#onCreateNode(org.alfresco.service.cmr.repository.ChildAssociationRef)
*/
@Override @Override
public void onCreateNode(ChildAssociationRef childAssocRef) public void onCreateNode(final ChildAssociationRef childAssocRef)
{
AuthenticationUtil.runAs(new RunAsWork<Void>()
{
@Override
public Void doWork() throws Exception
{ {
NodeRef nodeRef = childAssocRef.getChildRef(); NodeRef nodeRef = childAssocRef.getChildRef();
QName type = nodeService.getType(nodeRef); QName type = nodeService.getType(nodeRef);
@@ -299,6 +341,10 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
type = null; type = null;
} }
} }
return null;
}
}, AuthenticationUtil.getSystemUserName());
} }
/** /**

View File

@@ -319,7 +319,13 @@ public class RecordServiceImpl implements RecordService,
* @see org.alfresco.repo.node.NodeServicePolicies.OnCreateChildAssociationPolicy#onCreateChildAssociation(org.alfresco.service.cmr.repository.ChildAssociationRef, boolean) * @see org.alfresco.repo.node.NodeServicePolicies.OnCreateChildAssociationPolicy#onCreateChildAssociation(org.alfresco.service.cmr.repository.ChildAssociationRef, boolean)
*/ */
@Override @Override
public void onCreateChildAssociation(ChildAssociationRef childAssocRef, boolean bNew) public void onCreateChildAssociation(final ChildAssociationRef childAssocRef, final boolean bNew)
{
AuthenticationUtil.runAs(new RunAsWork<Void>()
{
@Override
public Void doWork() throws Exception
{ {
NodeRef nodeRef = childAssocRef.getChildRef(); NodeRef nodeRef = childAssocRef.getChildRef();
if (nodeService.exists(nodeRef) == true) if (nodeService.exists(nodeRef) == true)
@@ -327,6 +333,10 @@ public class RecordServiceImpl implements RecordService,
// create and file the content as a record // create and file the content as a record
file(nodeRef); file(nodeRef);
} }
return null;
}
}, AuthenticationUtil.getSystemUserName());
} }
/** /**