You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2010/12/31 20:12:00 UTC
svn commit: r1054161 - in /ofbiz/trunk/framework/common:
script/org/ofbiz/common/permission/CommonPermissionServices.xml
servicedef/services.xml
Author: adrianc
Date: Fri Dec 31 19:11:59 2010
New Revision: 1054161
URL: http://svn.apache.org/viewvc?rev=1054161&view=rev
Log:
Create a new permission checking service to make permission handling easier. The new service returns Boolean values for all CRUD + View permissions - avoiding the need to do multiple permission service calls.
The main purpose of the service is to control multiple screen elements with a single service call. This reduces screen widget and template code. Example:
<screen name="GetMyAppPermissions">
<!-- This screen must be included before any decorators -->
<section>
<actions>
<service service-name="commonGetAllCrudPermissions" result-map="result">
<field-map field-name="primaryPermission" value="MYAPP"/>
<field-map field-name="altPermission" value="MYAPP_ALT"/>
</service>
<set field="hasCreatePermission" from-field="result.hasCreatePermission" type="Boolean" global="true"/>
<set field="hasUpdatePermission" from-field="result.hasUpdatePermission" type="Boolean" global="true"/>
<set field="hasDeletePermission" from-field="result.hasDeletePermission" type="Boolean" global="true"/>
<set field="hasViewPermission" from-field="result.hasViewPermission" type="Boolean" global="true"/>
</actions>
<widgets/>
</section>
</screen>
<screen name="MainScreen">
<section>
<actions>
<set field="titleProperty" value="MyAppMainScreen"/>
</actions>
<widgets>
<include-screen name="GetMyAppPermissions"/>
<!-- screen elements controlled by has*Permission field values -->
...
</widgets>
</section>
</screen>
Modified:
ofbiz/trunk/framework/common/script/org/ofbiz/common/permission/CommonPermissionServices.xml
ofbiz/trunk/framework/common/servicedef/services.xml
Modified: ofbiz/trunk/framework/common/script/org/ofbiz/common/permission/CommonPermissionServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/script/org/ofbiz/common/permission/CommonPermissionServices.xml?rev=1054161&r1=1054160&r2=1054161&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/script/org/ofbiz/common/permission/CommonPermissionServices.xml (original)
+++ ofbiz/trunk/framework/common/script/org/ofbiz/common/permission/CommonPermissionServices.xml Fri Dec 31 19:11:59 2010
@@ -78,6 +78,55 @@ under the License.
</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>
+
<simple-method method-name="visualThemePermissionCheck" short-description="Visual Theme permission logic">
<set field="primaryPermission" value="VISUALTHEME"/>
<call-simple-method method-name="genericBasePermissionCheck"/>
Modified: ofbiz/trunk/framework/common/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/servicedef/services.xml?rev=1054161&r1=1054160&r2=1054161&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/servicedef/services.xml (original)
+++ ofbiz/trunk/framework/common/servicedef/services.xml Fri Dec 31 19:11:59 2010
@@ -30,6 +30,17 @@ under the License.
<implements service="permissionInterface"/>
</service>
+ <service name="commonGetAllCrudPermissions" engine="simple"
+ location="component://common/script/org/ofbiz/common/permission/CommonPermissionServices.xml" invoke="getAllCrudPermissions">
+ <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"/>
+ <attribute name="hasCreatePermission" type="Boolean" mode="OUT" optional="false"/>
+ <attribute name="hasUpdatePermission" type="Boolean" mode="OUT" optional="false"/>
+ <attribute name="hasDeletePermission" type="Boolean" mode="OUT" optional="false"/>
+ <attribute name="hasViewPermission" type="Boolean" mode="OUT" optional="false"/>
+ </service>
+
<service name="echoService" engine="java" validate="false"
location="org.ofbiz.common.CommonServices" invoke="echoService">
<description>Echos back all passed parameters</description>