Question

Création d'un rôle d'utilisateur d'accéder uniquement l'action VIEW sur ordre de vente, ne nie pas l'utilisateur de modifier l'adresse de facturation et de livraison dans la page d'information de commande.

entrer image description ici

Est-il possible de le réparer?

Était-ce utile?

La solution

  1. Créez votre propre contrôleur remplaçant Mage_Adminhtml_Sales_OrderController.

  2. Dans votre contrôleur, créez une méthode _isAllowed:

    /**
     * Acl check for admin
     *
     * @return bool
     */
    protected function _isAllowed()
    {
        $action = strtolower($this->getRequest()->getActionName());
    
        $aclResource = null;
        switch ($action) {
            case 'addressSave':
            case 'address':
                $aclResource = 'sales/order/actions/address';
                break;
        }
    
        if ($aclResource !== null) {
            return Mage::getSingleton('admin/session')->isAllowed($aclResource);
        }
    
        return parent::_isAllowed();
    }
    
  3. Dans votre adminhtml.xml, ajoutez ceci:

    <config>
        <acl>
            <resources>
                <admin>
                    <children>
                        <sales>
                            <children>
                                <order>
                                    <children>
                                        <actions>
                                            <children>
                                                <address translate="title"><title>Edit Address</title></address>
                                            </children>
                                        </actions>
                                    </children>
                                </order>
                            </children>
                        </sales>
                    </children>
                </admin>
            </resources>
        </acl>
    <config>
    

    Maintenant, vous pouvez activer et désactiver l'écran de modification d'adresse pour les utilisateurs.

  4. Si vous souhaitez masquer le lien de ces utilisateurs, vous pouvez copier app/design/adminhtml/default/default/template/sales/order/view/info.phtml sur votre thème admin personnalisé et remplacer

    <div class="tools"><?php echo $this->getAddressEditLink($_order->getBillingAddress())?></div>
    

    avec quelque chose comme ceci:

    <?php if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/address')): ?>
    <div class="tools"><?php echo $this->getAddressEditLink($_order->getBillingAddress())?></div>
    <?php endif; ?>
    

    et faire la même chose pour l'adresse de livraison. Idéalement, vous mettez l'appel au singleton dans votre propre classe de bloc, mais je placer le code dans le fichier de modèle pour un souci de concision.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top