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> |
Free forum by Nabble | Edit this page |