Friday, November 30, 2012

... and letting Alfresco Share know about custom permissions

Again this is Spring magic, i didn't know how to get Spring to update an Array, so I replaced it, but then you must check Alfresco context-xml for each version to check if it changes - dependencies :(


 <!-- adds to script-services-context.xml -->
 <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="jsonConversionComponent">
        <property name="targetObject" >
            <ref bean="jsonConversionComponent"/>
        </property>
        <property name="targetMethod" value="setUserPermissions" />
        <property name="arguments">
            <list>
                <array value-type="java.lang.String">
                    <!-- Standard ones -->
                    <value>CancelCheckOut</value>
                    <value>ChangePermissions</value>
                    <value>CreateChildren</value>
                    <value>Delete</value>
                    <value>Write</value>
                    <!-- customised ones -->
                    <value>Finalise</value>
                </array>
            </list>
        </property>
    </bean>


This will let Alfresco Share see the CRUD-permission 'Finalise' defined as 'Permission' in the Alfresco Repository Permission Model (extension). Then you can use this in your share-config-custom.xml where your actions now can be dependant on this permission

            <action id="...
 
                <permissions>
                    <permission allow="true">Finalise</permission>
                </permissions>

              ...
            </action>


About making custom share actions see here http://blogs.alfresco.com/wp/mikeh/2011/09/26/share-document-library-extensions-in-v4-0/ among others