Exemple : Stratégie de contrôle d'accès au niveau de la ressource pour un nouveau bean d'entité
Le fichier XML suivant peut servir de modèle pour les exigences de contrôle d'accès lorsque vous créez de nouveaux beans d'entité. Dans le cas du fichier suivant, le nouveau bean d'entité est appelé bean Bonus, il correspond à la table de base de données XBONUS, et il est utilisé par la commande de contrôleur MyNewControllerCmd. Dans cette stratégie de contrôle d'accès, seul le créateur d'un objet bean bonus peut effectuer l'action MyNewControllerCmd sur cet objet.
<?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>
où FashionFlowMemberId est l'ID de membre du magasin dans lequel la nouvelle ressource est utilisée.
Dans la stratégie de contrôle d'accès précédente, le nom d'interface de la commande de contrôleur est spécifié comme action, sans le désigner entièrement par son nom de package. Si votre application dispose de plusieurs interfaces du même nom, vous devez les désigner pleinement par leurs noms de package lorsque vous les spécifiez comme actions dans les stratégies de contrôle d'accès. A titre d'exemple, s'il y avait une ambiguïté avec les noms d'interface, la stratégie de contrôle d'accès précédente nécessiterait des modifications, comme suit (remarque, seules les lignes modifiées s'affichent et les modifications sont affichées en gras) :
<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"/>