Search code examples
alfresco-share

How to make create Children permission false for all sub folders inside alfresco document library for all users


My requirement is i don't want to allow any user to create or upload any folder or document inside all sub folders of document library. for this i need to make create children permission false. So please tell me How to make create Children permission false for all sub folders inside alfresco document library for all users.

Please provide sample code snippet and steps to do this.

Thanks in advance


Solution

  • I think you can create your own PermisionGroup.

    Add in your projet your xml file definition :

    main\amp\config\alfresco\module\mymodule\bootstrap\custom-sitePermissionDefinitions.xml
    
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE permissions >
    <!-- Custom permissions-->
    <permissions>
        <!-- Namespaces used in type references -->
       <namespaces>
          <namespace uri="http://www.alfresco.org/model/system/1.0" prefix="sys"/>
          <namespace uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
          <namespace uri="http://www.alfresco.org/model/site/1.0" prefix="st"/>
      </namespaces>
    
       <permissionSet type="st:site" expose="selected">
        <!-- Keep the existing -->
       <permissionGroup name="SiteManager" allowFullControl="true" expose="true" />
    
       <permissionGroup name="SiteCollaborator" allowFullControl="false" expose="true">
          <includePermissionGroup permissionGroup="Collaborator" type="cm:cmobject" />
       </permissionGroup>
    
       <permissionGroup name="SiteContributor" allowFullControl="false" expose="true">
          <includePermissionGroup permissionGroup="Contributor" type="cm:cmobject" />
       </permissionGroup>
    
        <permissionGroup name="SiteConsumer" allowFullControl="false" expose="true">
             <includePermissionGroup permissionGroup="Consumer" type="cm:cmobject" />
             <includePermissionGroup permissionGroup="ReadPermissions" type="sys:base" />
        </permissionGroup>
    
      <!-- Custom role based on the contributor one            -->
      <permissionGroup name="MyCustomRole" allowFullControl="false" expose="true" >
          <includePermissionGroup permissionGroup="Consumer" type="cm:cmobject"/>
           <!-- remove the permission to add a children
          <includePermissionGroup permissionGroup="AddChildren" type="sys:base"/>
          -->
          <includePermissionGroup permissionGroup="ReadPermissions" type="sys:base" />
      </permissionGroup>
    

    Don't forget to declare it in your context file (module-context.xml) :

    <!-- Registration of myproject ROLES -->
    <bean id="myproject_permissionBootstrapSite" parent="permissionModelBootstrap">
      <property name="model" value="alfresco/module/${project.artifactId}/bootstrap/custom-sitePermissionDefinitions.xml"/>
    </bean>