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>