Author: nmalin
Date: Tue Feb  6 22:01:52 2018
New Revision: 1823397

URL: http://svn.apache.org/viewvc?rev=1823397&view=rev
Log:
Improved: Convert CommonPermissionServices.xml mini lang to groovy (OFBIZ-9993)
convert services genericBasePermissionCheck, commonGetAllCrudPermissions and 
visualThemePermissionCheck from minilang to groovy.
The simple method genericBasePermissionCheck is maintain but indicate as 
deprecated in log to don't break direct call from other mini-lang script.

Thanks to Dennis Balkir for this patch

Added:
    ofbiz/ofbiz-framework/trunk/framework/common/groovyScripts/permission/
    
ofbiz/ofbiz-framework/trunk/framework/common/groovyScripts/permission/CommonPermissionServices.groovy
   (with props)
Modified:
    
ofbiz/ofbiz-framework/trunk/framework/common/minilang/permission/CommonPermissionServices.xml
    ofbiz/ofbiz-framework/trunk/framework/common/servicedef/services.xml

Added: 
ofbiz/ofbiz-framework/trunk/framework/common/groovyScripts/permission/CommonPermissionServices.groovy
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/common/groovyScripts/permission/CommonPermissionServices.groovy?rev=1823397&view=auto
==============================================================================
--- 
ofbiz/ofbiz-framework/trunk/framework/common/groovyScripts/permission/CommonPermissionServices.groovy
 (added)
+++ 
ofbiz/ofbiz-framework/trunk/framework/common/groovyScripts/permission/CommonPermissionServices.groovy
 Tue Feb  6 22:01:52 2018
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.ofbiz.base.util.UtilProperties
+
+
+def genericBasePermissionCheck() {
+    Map result = success()
+    // allow mainAction to be set from outside methods or direct to the service
+    String mainAction = parameters.mainAction
+    if (!mainAction) {
+        return 
error(UtilProperties.getMessage("CommonUiLabels","CommonPermissionMainActionAttributeMissing",
 parameters.locale))
+    }
+
+    // allow primary permission to be set from outside methods or direct to 
the service
+    String primaryPermission = parameters.primaryPermission
+    if (!primaryPermission) {
+        return 
error(UtilProperties.getMessage("CommonUiLabels","CommonPermissionPrimaryPermissionMissing",
 parameters.locale))
+    }
+    logVerbose("Checking for primary permission 
${primaryPermission}_${mainAction}")
+
+    // allow alt permission to be set from outside methods or direct to the 
service
+    String altPermission = parameters.altPermission
+    String altPermissionList = ""
+    if (altPermission) {
+        logInfo("Checking for alternate permission 
${altPermission}_${mainAction}")
+        altPermissionList = ", ${altPermission}_${mainAction}, 
${altPermission}_ADMIN"
+    }
+    // altPermission is not a required field; no need to add Error
+
+    // set up called service name
+    String resourceDescription = parameters.resourceDescription
+    if (!resourceDescription) {
+        resourceDescription = UtilProperties.getMessage("CommonUiLabels", 
"CommonPermissionThisOperation", parameters.locale)
+    }
+
+    // check permission, permission checks include _ADMIN
+    if (security.hasEntityPermission(primaryPermission, "_${mainAction}", 
parameters.userLogin)
+        || security.hasEntityPermission(altPermission, "_${mainAction}", 
parameters.userLogin)) {
+        result.hasPermission = true
+    } else {
+        result.hasPermission = false
+        messageContext = [resourceDescription: resourceDescription,
+                          primaryPermission: primaryPermission,
+                          mainAction: mainAction,
+                          altPermissionList: altPermissionList]
+        result.failMessage = UtilProperties.getMessage("CommonUiLabels", 
"CommonGenericPermissionError", messageContext, parameters.locale)
+    }
+    return result
+}
+
+/**
+ * Get all CRUD and View Permissions
+ */
+def getAllCrudPermissions() {
+    Map result = success()
+    result.hasCreatePermission = false
+    result.hasUpdatePermission = false
+    result.hasDeletePermission = false
+    result.hasViewPermission = false
+    def primaryPermission = parameters.primaryPermission
+    if (!primaryPermission) {
+        return error(UtilProperties.getMessage("CommonUiLabels", 
"CommonPermissionPrimaryPermissionMissing", parameters.locale))
+    }
+    logInfo("Getting all CRUD permissions for ${primaryPermission}")
+    result = hasCrudPermission(primaryPermission, result)
+
+    def altPermission = parameters.altPermission
+    if (altPermission) {
+        logInfo("Getting all CRUD permissions for ${altPermission}")
+        result = hasCrudPermission(altPermission, result)
+    }
+    return result
+}
+
+def hasCrudPermission(String perm, Map resultMap) {
+    if (security.hasEntityPermission(perm, "_CREATE", parameters.userLogin)) {
+        resultMap.hasCreatePermission = true
+    }
+    if (security.hasEntityPermission(perm, "_UPDATE", parameters.userLogin)) {
+        resultMap.hasUpdatePermission = true
+    }
+    if (security.hasEntityPermission(perm, "_DELETE", parameters.userLogin)) {
+        resultMap.hasDeletePermission = true
+    }
+    if (security.hasEntityPermission(perm, "_VIEW", parameters.userLogin)) {
+        resultMap.hasViewPermission = true
+    }
+    return resultMap
+}
+
+/**
+ * Visual Theme permission logic
+ */
+def visualThemePermissionCheck() {
+    parameters.primaryPermission = "VISUAL_THEME"
+    Map result = run service: "genericBasePermissionCheck", with: parameters
+    return result
+}

Propchange: 
ofbiz/ofbiz-framework/trunk/framework/common/groovyScripts/permission/CommonPermissionServices.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
ofbiz/ofbiz-framework/trunk/framework/common/groovyScripts/permission/CommonPermissionServices.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: 
ofbiz/ofbiz-framework/trunk/framework/common/groovyScripts/permission/CommonPermissionServices.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
ofbiz/ofbiz-framework/trunk/framework/common/minilang/permission/CommonPermissionServices.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/common/minilang/permission/CommonPermissionServices.xml?rev=1823397&r1=1823396&r2=1823397&view=diff
==============================================================================
--- 
ofbiz/ofbiz-framework/trunk/framework/common/minilang/permission/CommonPermissionServices.xml
 (original)
+++ 
ofbiz/ofbiz-framework/trunk/framework/common/minilang/permission/CommonPermissionServices.xml
 Tue Feb  6 22:01:52 2018
@@ -56,80 +56,15 @@ under the License.
             <property-to-field resource="CommonUiLabels" 
property="CommonPermissionThisOperation" field="resourceDescription"/>
         </if-empty>
 
-        <!-- check permission -->
-        <if>
-            <condition>
-                <or>
-                    <!-- Permission checks include _ADMIN -->
-                    <if-has-permission permission="${primaryPermission}" 
action="_${mainAction}"/>
-                    <if-has-permission permission="${altPermission}" 
action="_${mainAction}"/>
-                </or>
-            </condition>
-            <then>
-                <set field="hasPermission" type="Boolean" value="true"/>
-                <field-to-result field="hasPermission"/>
-            </then>
-            <else>
-                <property-to-field resource="CommonUiLabels" 
property="CommonGenericPermissionError" field="failMessage"/>
-                <set field="hasPermission" type="Boolean" value="false"/>
-                <field-to-result field="hasPermission"/>
-                <field-to-result field="failMessage"/>
-            </else>
-        </if>
-    </simple-method>
-
-    <simple-method method-name="getAllCrudPermissions" short-description="Get 
All CRUD and View Permissions">
-        <if-empty field="primaryPermission">
-            <set field="primaryPermission" 
from-field="parameters.primaryPermission"/>
-            <if-empty field="primaryPermission">
-                <add-error><fail-property resource="CommonUiLabels" 
property="CommonPermissionPrimaryPermissionMissing"/></add-error>
-            </if-empty>
-        </if-empty>
-        <check-errors/>
-        <set field="hasCreatePermission" value="false" type="Boolean"/>
-        <set field="hasUpdatePermission" value="false" type="Boolean"/>
-        <set field="hasDeletePermission" value="false" type="Boolean"/>
-        <set field="hasViewPermission" value="false" type="Boolean"/>
-        <log level="info" message="Getting all CRUD permissions for 
${primaryPermission}"/>
-        <if-has-permission permission="${primaryPermission}" action="_CREATE">
-            <set field="hasCreatePermission" value="true" type="Boolean"/>
-        </if-has-permission>
-        <if-has-permission permission="${primaryPermission}" action="_UPDATE">
-            <set field="hasUpdatePermission" value="true" type="Boolean"/>
-        </if-has-permission>
-        <if-has-permission permission="${primaryPermission}" action="_DELETE">
-            <set field="hasDeletePermission" value="true" type="Boolean"/>
-        </if-has-permission>
-        <if-has-permission permission="${primaryPermission}" action="_VIEW">
-            <set field="hasViewPermission" value="true" type="Boolean"/>
-        </if-has-permission>
-        <if-empty field="altPermission">
-            <set field="altPermission" from-field="parameters.altPermission"/>
-        </if-empty>
-        <if-not-empty field="altPermission">
-            <log level="info" message="Getting all CRUD permissions for 
${altPermission}"/>
-            <if-has-permission permission="${altPermission}" action="_CREATE">
-                <set field="hasCreatePermission" value="true" type="Boolean"/>
-            </if-has-permission>
-            <if-has-permission permission="${altPermission}" action="_UPDATE">
-                <set field="hasUpdatePermission" value="true" type="Boolean"/>
-            </if-has-permission>
-            <if-has-permission permission="${altPermission}" action="_DELETE">
-                <set field="hasDeletePermission" value="true" type="Boolean"/>
-            </if-has-permission>
-            <if-has-permission permission="${altPermission}" action="_VIEW">
-                <set field="hasViewPermission" value="true" type="Boolean"/>
-            </if-has-permission>
-        </if-not-empty>
-        <field-to-result field="hasCreatePermission"/>
-        <field-to-result field="hasUpdatePermission"/>
-        <field-to-result field="hasDeletePermission"/>
-        <field-to-result field="hasViewPermission"/>
-    </simple-method>
+        <log level="warning" message="This simple-method-call is deprecated! 
Please use a service-call of genericBasePermissionCheck instead."/>
+        <set field="inParams.altPermission" from-field="altPermission"/>
+        <set field="inParams.mainAction" from-field="parameters.mainAction"/>
+        <set field="inParams.primaryPermission" 
from-field="primaryPermission"/>
+        <set field="inParams.resourceDescription" 
from-field="parameters.resourceDescription"/>
+        <call-service service-name="genericBasePermissionCheck" 
in-map-name="inParams">
+            <result-to-field result-name="hasPermission"/>
+        </call-service>
+        <field-to-result field="hasPermission"/>
 
-    <simple-method method-name="visualThemePermissionCheck" 
short-description="Visual Theme permission logic">
-        <set field="primaryPermission" value="VISUALTHEME"/>
-        <call-simple-method method-name="genericBasePermissionCheck"/>
     </simple-method>
-
 </simple-methods>

Modified: ofbiz/ofbiz-framework/trunk/framework/common/servicedef/services.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/common/servicedef/services.xml?rev=1823397&r1=1823396&r2=1823397&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/common/servicedef/services.xml 
(original)
+++ ofbiz/ofbiz-framework/trunk/framework/common/servicedef/services.xml Tue 
Feb  6 22:01:52 2018
@@ -30,8 +30,8 @@ under the License.
         <implements service="permissionInterface"/>
     </service>
 
-    <service name="commonGetAllCrudPermissions" engine="simple"
-        
location="component://common/minilang/permission/CommonPermissionServices.xml" 
invoke="getAllCrudPermissions" auth="false">
+    <service name="commonGetAllCrudPermissions" engine="groovy"
+        
location="component://common/groovyScripts/permission/CommonPermissionServices.groovy"
 invoke="getAllCrudPermissions" auth="false">
         <description>Returns all CRUD and View Permissions</description>
         <attribute name="primaryPermission" type="String" mode="IN" 
optional="false"/>
         <attribute name="altPermission" type="String" mode="IN" 
optional="true"/>
@@ -424,8 +424,8 @@ under the License.
     </service>
 
     <!-- common permission services -->
-    <service name="genericBasePermissionCheck" engine="simple"
-             
location="component://common/minilang/permission/CommonPermissionServices.xml" 
invoke="genericBasePermissionCheck">
+    <service name="genericBasePermissionCheck" engine="groovy"
+             
location="component://common/groovyScripts/permission/CommonPermissionServices.groovy"
 invoke="genericBasePermissionCheck">
         <implements service="permissionInterface"/>
         <attribute name="primaryPermission" type="String" mode="IN" 
optional="false"/>
         <attribute name="altPermission" type="String" mode="IN" 
optional="true"/>
@@ -569,8 +569,8 @@ under the License.
     </service>
 
     <!-- ==============Permission Checking Service============= -->
-    <service name="visualThemePermissionCheck" engine="simple"
-        
location="component://common/minilang/permission/CommonPermissionServices.xml" 
invoke="visualThemePermissionCheck">
+    <service name="visualThemePermissionCheck" engine="groovy"
+        
location="component://common/groovyScripts/permission/CommonPermissionServices.groovy"
 invoke="visualThemePermissionCheck">
         <description>Visual Theme Permission Checking Logic</description>
         <implements service="permissionInterface"/>
     </service>


Reply via email to