This is an automated email from the ASF dual-hosted git repository.

jacopoc pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit 40c0aa133c103f391523d124f29dce3f484eab8a
Author: Jacopo Cappellato <[email protected]>
AuthorDate: Tue Jun 2 19:30:54 2026 +0200

    Implement special permission handling for DataResource CRUD operations when 
the dataTemplateTypeId attribute is set
---
 .../permission/DataResourcePermissionServices.xml      | 18 ++++++++++++++++++
 applications/content/servicedef/services.xml           |  1 +
 2 files changed, 19 insertions(+)

diff --git 
a/applications/content/minilang/permission/DataResourcePermissionServices.xml 
b/applications/content/minilang/permission/DataResourcePermissionServices.xml
index 3ef085d961..66140191e1 100644
--- 
a/applications/content/minilang/permission/DataResourcePermissionServices.xml
+++ 
b/applications/content/minilang/permission/DataResourcePermissionServices.xml
@@ -21,6 +21,24 @@
         xmlns="http://ofbiz.apache.org/Simple-Method"; 
xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method 
http://ofbiz.apache.org/dtds/simple-methods.xsd";>
 
     <simple-method method-name="genericDataResourcePermission" 
short-description="Generic Service for DataResource Permissions">
+        <!-- Operating with DataResources containing templates requires 
special permission -->
+        <if>
+            <condition>
+                <and>
+                    <not>
+                        <if-empty field="parameters.dataTemplateTypeId"/>
+                    </not>
+                    <if-compare field="parameters.dataTemplateTypeId" 
value="NONE" operator="not-equals"/>
+                </and>
+            </condition>
+            <then>
+                <set field="primaryPermission" value="CONTENTMGR_SUPER"/>
+                <call-simple-method method-name="genericBasePermissionCheck"
+                                    
xml-resource="component://common/minilang/permission/CommonPermissionServices.xml"/>
+                <return/>
+            </then>
+        </if>
+
         <set field="primaryPermission" value="CONTENTMGR"/>
         <call-simple-method method-name="genericBasePermissionCheck" 
xml-resource="component://common/minilang/permission/CommonPermissionServices.xml"/>
 
diff --git a/applications/content/servicedef/services.xml 
b/applications/content/servicedef/services.xml
index 24fb5c2197..4330262773 100644
--- a/applications/content/servicedef/services.xml
+++ b/applications/content/servicedef/services.xml
@@ -898,6 +898,7 @@
         <description>Generic DataResource Permission Service; Takes mainAction 
to determine the mode.</description>
         <implements service="permissionInterface"/>
         <attribute name="dataResourceId" type="String" mode="IN" 
optional="true"/>
+        <attribute name="dataTemplateTypeId" type="String" mode="IN" 
optional="true"/>
     </service>
 
     <service name="createContentAlternativeUrl" engine="groovy"

Reply via email to