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
Friday, November 30, 2012
Thursday, November 29, 2012
Adding custom permissions in Alfresco
If your extending the PermssionModel of Alfresco, you might get an Exception when using the new permission groups .. like:
...
Caused by: java.lang.NullPointerException
at org.alfresco.repo.site.RoleComparatorImpl.compare(RoleComparatorImpl.java:39)
at org.alfresco.repo.site.RoleComparatorImpl.compare(RoleComparatorImpl.java:24)
at java.util.TreeMap.put(TreeMap.java:530)
at java.util.TreeSet.add(TreeSet.java:238)
at org.alfresco.repo.site.SiteServiceImpl.getMembersRole(SiteServiceImpl.java:1717)
...
This is caused by this RoleComparator not knowing the groups. This can be resolved by some spring magic:
<!-- adds to script-services-context.xml -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="siteRoleComparator">
<property name="targetObject">
<util:property-path path="siteRoleComparator.RolePrecedence" />
</property>
<property name="targetMethod" value="putAll" />
<property name="arguments">
<list>
<map key-type="java.lang.String" value-type="java.lang.Integer">
<entry key="User" value="10" />
</map>
</list>
</property>
</bean>
This is an addition to the guides http://keytocontent.blogspot.dk/2011/04/alfresco-share-permissionsroles-part-ii.html and https://wiki.alfresco.com/wiki/Custom_Permissions_in_Share
...
Caused by: java.lang.NullPointerException
at org.alfresco.repo.site.RoleComparatorImpl.compare(RoleComparatorImpl.java:39)
at org.alfresco.repo.site.RoleComparatorImpl.compare(RoleComparatorImpl.java:24)
at java.util.TreeMap.put(TreeMap.java:530)
at java.util.TreeSet.add(TreeSet.java:238)
at org.alfresco.repo.site.SiteServiceImpl.getMembersRole(SiteServiceImpl.java:1717)
...
This is caused by this RoleComparator not knowing the groups. This can be resolved by some spring magic:
<!-- adds to script-services-context.xml -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="siteRoleComparator">
<property name="targetObject">
<util:property-path path="siteRoleComparator.RolePrecedence" />
</property>
<property name="targetMethod" value="putAll" />
<property name="arguments">
<list>
<map key-type="java.lang.String" value-type="java.lang.Integer">
<entry key="User" value="10" />
</map>
</list>
</property>
</bean>
This is an addition to the guides http://keytocontent.blogspot.dk/2011/04/alfresco-share-permissionsroles-part-ii.html and https://wiki.alfresco.com/wiki/Custom_Permissions_in_Share
Subscribe to:
Posts (Atom)