diff --git a/actool-example/META-INF/MANIFEST.MF b/actool-example/META-INF/MANIFEST.MF new file mode 100644 index 0000000..e9d8645 --- /dev/null +++ b/actool-example/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Content-Package-Id: my_packages:actool-example +Content-Package-Roots: /apps/actool-example +Content-Package-Type: application + diff --git a/actool-example/META-INF/vault/config.xml b/actool-example/META-INF/vault/config.xml new file mode 100644 index 0000000..b525f1c --- /dev/null +++ b/actool-example/META-INF/vault/config.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/actool-example/META-INF/vault/definition/.content.xml b/actool-example/META-INF/vault/definition/.content.xml new file mode 100644 index 0000000..c490fe2 --- /dev/null +++ b/actool-example/META-INF/vault/definition/.content.xml @@ -0,0 +1,25 @@ + + + + + + diff --git a/actool-example/META-INF/vault/filter.xml b/actool-example/META-INF/vault/filter.xml new file mode 100644 index 0000000..c45186e --- /dev/null +++ b/actool-example/META-INF/vault/filter.xml @@ -0,0 +1,4 @@ + + + + diff --git a/actool-example/META-INF/vault/nodetypes.cnd b/actool-example/META-INF/vault/nodetypes.cnd new file mode 100644 index 0000000..8f00f08 --- /dev/null +++ b/actool-example/META-INF/vault/nodetypes.cnd @@ -0,0 +1,13 @@ +<'sling'='http://sling.apache.org/jcr/sling/1.0'> +<'nt'='http://www.jcp.org/jcr/nt/1.0'> +<'rep'='internal'> + +[sling:Folder] > nt:folder + - * (undefined) multiple + - * (undefined) + + * (nt:base) = sling:Folder version + +[rep:RepoAccessControllable] + mixin + + rep:repoPolicy (rep:Policy) protected ignore + diff --git a/actool-example/META-INF/vault/properties.xml b/actool-example/META-INF/vault/properties.xml new file mode 100644 index 0000000..3df5871 --- /dev/null +++ b/actool-example/META-INF/vault/properties.xml @@ -0,0 +1,19 @@ + + + +FileVault Package Properties + +application +admin +2 +my_packages +2023-10-17T14:05:32.916+09:00 +admin +1 +2023-10-17T14:05:32.908+09:00 + + +admin +actool-example +2023-10-17T14:05:32.908+09:00 + diff --git a/actool-example/jcr_root/.content.xml b/actool-example/jcr_root/.content.xml new file mode 100644 index 0000000..8ea9f2a --- /dev/null +++ b/actool-example/jcr_root/.content.xml @@ -0,0 +1,6 @@ + + diff --git a/actool-example/jcr_root/apps/.content.xml b/actool-example/jcr_root/apps/.content.xml new file mode 100644 index 0000000..54084a8 --- /dev/null +++ b/actool-example/jcr_root/apps/.content.xml @@ -0,0 +1,4 @@ + + diff --git a/actool-example/jcr_root/apps/actool-example/acl-template/fragment-base.author/base.yaml b/actool-example/jcr_root/apps/actool-example/acl-template/fragment-base.author/base.yaml new file mode 100644 index 0000000..a2de70b --- /dev/null +++ b/actool-example/jcr_root/apps/actool-example/acl-template/fragment-base.author/base.yaml @@ -0,0 +1,206 @@ +# System configuration (all global fragments) + +- group_config: + + - fragment-basic-allow: + + - name: + memberOf: + path: f + + - fragment-restrict-for-everyone: + + - name: + memberOf: + path: f + + + + +- ace_config: + + + - fragment-basic-allow: + + - path: / + permission: allow + actions: read + privileges: + repGlob: + + ## allows access to nodes that are readable for all users + ### /content + - path: /content + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: "" + + - path: /content + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: /jcr:* + + + ### /content/experience-fragments + - path: /content/experience-fragments + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: "" + + - path: /content/experience-fragments + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: /jcr:* + + + ### /content/dam + - path: /content/dam + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: "" + + - path: /content/dam + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: /jcr:* + + + ### /content/dam/projects + - path: /content/dam/projects + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: "" + + - path: /content/dam/projects + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: /jcr:* + + + ### /content/dam/collections + - path: /content/dam/collections + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: "" + + - path: /content/dam/collections + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: /jcr:* + + + ### /content/projects + - path: /content/projects + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: "" + + - path: /content/projects + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: /jcr:* + + + ### /content/cq:tags + - path: /content/cq:tags + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: "" + + - path: /content/cq:tags + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: /jcr:* + + + ### /conf + - path: /conf + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: "" + + - path: /conf + permission: allow + actions: + privileges: jcr:read,jcr:readAccessControl + repGlob: /jcr:* + + + - fragment-restrict-for-everyone: + + # reset acls of the user contents for the built-in groups + - path: /content + permission: deny + actions: + privileges: jcr:all + repGlob: + + + - path: /content/experience-fragments + permission: deny + actions: + privileges: jcr:all + repGlob: + + + - path: /content/dam + permission: deny + actions: + privileges: jcr:all + repGlob: + + + - path: /content/dam/projects + permission: deny + actions: + privileges: jcr:all + repGlob: + + + - path: /content/dam/collections + permission: deny + actions: + privileges: jcr:all + repGlob: + + + - path: /content/projects + permission: deny + actions: + privileges: jcr:all + repGlob: + + + - path: /content/cq:tags + permission: deny + actions: + privileges: jcr:all + repGlob: + + + - path: /conf + permission: deny + actions: + privileges: jcr:all + repGlob: + + + + + + diff --git a/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/case-study.yaml b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/case-study.yaml new file mode 100644 index 0000000..178175c --- /dev/null +++ b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/case-study.yaml @@ -0,0 +1,76 @@ +# Role groups for We-Retail + +# /content/we-retail/language-masters/it/A1 +# /content/we-retail/language-masters/it/F1 +# /content/we-retail/language-masters/it/A1/B2 +# /content/we-retail/language-masters/it/A1/E2 +# /content/we-retail/language-masters/it/A1/B2/C3 +# /content/we-retail/language-masters/it/A1/B2/D3 + + +- group_config: + - sample-group: + - name: sample group + isMemberOf: fragment-restrict-for-everyone,fragment-basic-allow + + +- ace_config: + + - sample-group: + + ## allows access to nodes that are readable for all users + ### /content + - FOR path IN [/content/we-retail, /content/we-retail/A1]: + - path: ${path} + permission: allow + actions: + privileges: jcr:read + repGlob: "" + + - path: ${path} + permission: allow + actions: + privileges: jcr:read + repGlob: /jcr:* + + - FOR path IN [/content/we-retail/A1/B2]: + - path: ${path} + permission: allow + actions: read,modify + privileges: + repGlob: "" + + - path: ${path} + permission: allow + actions: read,modify + privileges: + repGlob: /jcr:* + + - FOR path IN [/content/we-retail/A1/B2/C3,/content/we-retail/F1]: + - path: ${path} + permission: allow + actions: read,modify,create + privileges: + repGlob: + + + - path: /content/dam + permission: allow + actions: + privileges: jcr:all + repGlob: + + - path: /conf + permission: allow + actions: + privileges: jcr:all + repGlob: + + - path: /content/we-retail/language-masters/en + permission: allow + actions: + privileges: jcr:all + repGlob: + + + diff --git a/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/content-group.yaml b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/content-group.yaml new file mode 100644 index 0000000..db32d99 --- /dev/null +++ b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/content-group.yaml @@ -0,0 +1,207 @@ +# Content groups for We-Retail +- DEF sitePrefix=weretail +- DEF countryArr=[us, ca, ch, de, fr, es, it] +- DEF permissionOfRole=: + editor: read,modify,create + publisher: read,modify,create,delete + approver: read,modify,create,delete,acl_read + + +- group_config: + + - FOR country IN ${countryArr}: + + - content-${sitePrefix}-${country}-for-editor: + - name: We-Retail ${country} content for editor + isMemberOf: + path: /home/groups/${sitePrefix} + + + - content-${sitePrefix}-${country}-for-publisher: + - name: We-Retail ${country} content for publisher + isMemberOf: + path: /home/groups/${sitePrefix} + + + - content-${sitePrefix}-${country}-for-approver: + - name: We-Retail ${country} content for approver + isMemberOf: workflow-administrators + path: /home/groups/${sitePrefix} + + + - content-${sitePrefix}-language-masters-for-editor: + - name: We-Retail language-masters content for editor + isMemberOf: + path: /home/groups/${sitePrefix} + + + - content-${sitePrefix}-language-masters-for-publisher: + - name: We-Retail language-masters content for publisher + isMemberOf: + path: /home/groups/${sitePrefix} + + + - content-${sitePrefix}-language-masters-for-approver: + - name: We-Retail language-masters content for approver + isMemberOf: + path: /home/groups/${sitePrefix} + + + + +- ace_config: + + ## for language-masters + - FOR country IN ${countryArr}: + - FOR role IN ${keys(permissionOfRole)}: + + - content-${sitePrefix}-${country}-for-${role}: + - path: /content/we-retail + permission: allow + actions: read + privileges: + + - path: /content/we-retail/${country} + permission: allow + actions: ${permissionOfRole[role]} + privileges: + + - path: /content/experience-fragments + permission: allow + actions: ${permissionOfRole[role]} + privileges: + + - path: /content/dam/we-retail + permission: allow + actions: ${permissionOfRole[role]} + privileges: + + - path: /content/dam/projects/we-retail + permission: allow + actions: ${permissionOfRole[role]} + privileges: + + - path: /content/projects + permission: allow + actions: ${permissionOfRole[role]} + privileges: + + # delete permission is necessary if you want to make a launch + - path: /content/launches + permission: allow + actions: read,modify,create,delete + privileges: + + - path: /content/cq:tags/we-retail + permission: allow + actions: read + privileges: + + - path: /conf/we-retail/settings/wcm/templates + permission: allow + actions: read + privileges: + + - path: /conf/we-retail/settings/wcm/policies + permission: allow + actions: read + privileges: + + + - IF ${startsWith(role, "publisher") or startsWith(role, "approver")}: + + - path: /conf + permission: allow + privileges: crx:replicate + restrictions: + rep:glob: '/*/cloudconfigs' + + - path: /conf + permission: allow + privileges: crx:replicate + restrictions: + rep:glob: '/*/cloudconfigs/*' + + ## replicate permission of the template and the policiess is necessary if you want to publish pages + - path: /conf/we-retail/settings/wcm/templates + permission: allow + privileges: crx:replicate + + - path: /conf/we-retail/settings/wcm/policies + permission: allow + privileges: crx:replicate + + + ## for language-masters + - FOR role IN ${keys(permissionOfRole)}: + + - content-${sitePrefix}-language-masters-for-${role}: + - path: /content/we-retail + permission: allow + actions: ${permissionOfRole[role]} + privileges: + + - path: /content/experience-fragments + permission: allow + actions: ${permissionOfRole[role]} + privileges: + + - path: /content/dam/we-retail + permission: allow + actions: ${permissionOfRole[role]} + privileges: + + - path: /content/dam/projects/we-retail + permission: allow + actions: ${permissionOfRole[role]} + privileges: + + - path: /content/projects + permission: allow + actions: ${permissionOfRole[role]} + privileges: + + # delete permission is necessary if you want to make a launch + - path: /content/launches + permission: allow + actions: read,modify,create,delete + privileges: + + - path: /content/cq:tags/we-retail + permission: allow + actions: read,modify,create,delete + privileges: + + - path: /conf/we-retail/settings/wcm/templates + permission: allow + actions: read + privileges: + + - path: /conf/we-retail/settings/wcm/policies + permission: allow + actions: read + privileges: + + + - IF ${startsWith(role, "publisher") or startsWith(role, "approver")}: + + - path: /conf + permission: allow + privileges: crx:replicate + restrictions: + rep:glob: '/*/cloudconfigs' + + - path: /conf + permission: allow + privileges: crx:replicate + restrictions: + rep:glob: '/*/cloudconfigs/*' + + ## replicate permission of the template and the policiess is necessary if you want to publish pages + - path: /conf/we-retail/settings/wcm/templates + permission: allow + privileges: crx:replicate + + - path: /conf/we-retail/settings/wcm/policies + permission: allow + privileges: crx:replicate diff --git a/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/fragment-role.yaml b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/fragment-role.yaml new file mode 100644 index 0000000..3ceb484 --- /dev/null +++ b/actool-example/jcr_root/apps/actool-example/acl-template/we-retail.author/fragment-role.yaml @@ -0,0 +1,24 @@ +# Role groups for We-Retail +- DEF sitePrefix=weretail +- DEF countryLangMasterArr=[us, ca, ch, de, fr, es, it, language-masters] + + +- group_config: + - FOR country IN ${countryLangMasterArr}: + + - ${sitePrefix}-${country}-editor: + - name: We-Retail ${country} editor + isMemberOf: fragment-restrict-for-everyone,fragment-basic-allow,content-authors,content-weretail-${country}-for-editor + path: /home/groups/${sitePrefix} + + - ${sitePrefix}-${country}-publisher: + - name: We-Retail ${country} publisher + isMemberOf: fragment-restrict-for-everyone,fragment-basic-allow,content-authors,workflow-users,content-weretail-${country}-for-publisher + path: /home/groups/${sitePrefix} + + - ${sitePrefix}-${country}-approver: + - name: We-Retail ${country} approver + isMemberOf: fragment-restrict-for-everyone,fragment-basic-allow,content-authors,workflow-administrators,content-weretail-${country}-for-approver + path: /home/groups/${sitePrefix} + +