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 9a81e08b14
commit 3dbd9f56d8
4 changed files with 115 additions and 40 deletions

View File

@@ -237,4 +237,17 @@
</property>
</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>

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.setMembership=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.M2Property;
import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.policy.ClassPolicyDelegate;
import org.alfresco.repo.policy.JavaBehaviour;
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.AssociationDefinition;
import org.alfresco.service.cmr.dictionary.Constraint;
@@ -245,6 +247,12 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
policy.beforeRemoveReference(fromNodeRef, toNodeRef, reference);
}
/**
*
* @param fromNodeRef
* @param toNodeRef
* @param reference
*/
protected void invokeOnRemoveReference(NodeRef fromNodeRef, NodeRef toNodeRef, QName reference)
{
// get qnames to invoke against
@@ -254,8 +262,16 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
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
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 &&
isCustomisable(aspectTypeQName) == true)
@@ -263,10 +279,22 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
QName customPropertyAspect = getCustomAspect(aspectTypeQName);
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
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 &&
isCustomisable(aspectTypeQName) == true)
@@ -274,10 +302,24 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
QName customPropertyAspect = getCustomAspect(aspectTypeQName);
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
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();
QName type = nodeService.getType(nodeRef);
@@ -299,6 +341,10 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
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)
*/
@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();
if (nodeService.exists(nodeRef) == true)
@@ -327,6 +333,10 @@ public class RecordServiceImpl implements RecordService,
// create and file the content as a record
file(nodeRef);
}
return null;
}
}, AuthenticationUtil.getSystemUserName());
}
/**