Ejemplo: política de control de acceso a nivel de recurso para un nuevo bean de entidad

El archivo XML siguiente puede actuar como plantilla para los requisitos de control de acceso al crear nuevos beans de entidad. En el caso del archivo siguiente, el nuevo bean de entidad se denomina bean Bonus, corresponde a la tabla de base de datos XBONUS y lo utiliza el mandato de controlador MyNewControllerCmd. En esta política de control de acceso, solo el creador de un objeto bean bonus puede realizar la acción MyNewControllerCmd en dicho objeto.

<?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?> 
<!DOCTYPE Policies SYSTEM "../dtd/accesscontrolpolicies.dtd">

<Policies>
   <Action Name="MyNewControllerCmd"
      CommandName="com.ibm.commerce.sample.commands.MyNewControllerCmd">
   </Action>
 
   <ResourceCategory Name="com.ibm.commerce.extension.objects.BonusResourceCategory"  
       ResourceBeanClass="com.ibm.commerce.extension.objects.Bonus" >
   
         <ResourceAction Name="MyNewControllerCmd" />
         </ResourceCategory>

   <ActionGroup Name="MyNewControllerCmdActionGroup"
      OwnerID="RootOrganization">
   <ActionGroupAction Name="MyNewControllerCmd"/>
   </ActionGroup>

   <ResourceGroup Name="BonusResourceGroup"  OwnerID="RootOrganization" >
      <ResourceGroupResource Name="com.ibm.commerce.extension.objects.
            BonusResourceCategory" />
   </ResourceGroup>
   <Policy Name="AllUsersUpdateBonusResourceGroup" 
      OwnerID="FashionFlowMemberId"
      UserGroup="AllUsers"
      UserGroupOwner="RootOrganization"
      ActionGroupName="MyNewControllerCmdActionGroup"
      ResourceGroupName="BonusResourceGroup" 
      RelationName="creator"
      PolicyType="groupableStandard">
   </Policy>
             
   <PolicyGroup Name="ManagementAndAdministrationPolicyGroup" 
         OwnerID="RootOrganization">
   <!-- Define policies in this policy group -->
   <PolicyGroupPolicy        Name="AllUsersUpdateBonusResourceGroup" 
            PolicyOwnerID="FashionFlowMemberId" />
                        
   </PolicyGroup>

</Policies>

donde FashionFlowMemberId es el ID de miembro de la tienda en la que se está utilizando el nuevo recurso.

En la política de control de acceso anterior, el nombre de interfaz del mandato de controlador se especifica como la acción, sin calificarlo totalmente con el nombre de paquete. Si la aplicación tiene varias interfaces con el mismo nombre, deberá calificarlas totalmente con los nombres de paquete cuando las especifique como acciones en las políticas de control de acceso. Por ejemplo, si hubiera ambigüedad con los nombres de interfaz, sería necesario realizar los cambios siguientes en la política de control de acceso anterior (tenga en cuenta que solo se visualizan las líneas cambiadas y que las modificaciones se muestran en negrita):

<Action Name="com.ibm.commerce.sample.commands.MyNewControllerCmd"
CommandName="com.ibm.commerce.sample.commands.MyNewControllerCmd">
.
.
.
<ResourceAction Name="com.ibm.commerce.sample.commands.MyNewControllerCmd" />
.
.
.
<ActionGroupAction Name="com.ibm.commerce.sample.commands.MyNewControllerCmd"/>