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