質問

販売注文の下でビューアクションのみにアクセスするためのユーザーロールを作成すると、注文情報ページの請求および配送先住所の編集をユーザーが拒否しません。

enter image description here

それを修正する方法はありますか?

役に立ちましたか?

解決

  1. 独自のコントローラーの交換を作成します Mage_Adminhtml_Sales_OrderController.

  2. コントローラーで、作成します _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. あなたの中で adminhtml.xml, 、 これを追加:

    <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>
    

    これで、ユーザーの編集アドレス画面を有効にして無効にできます。

  4. これらのユーザーからリンクを隠したい場合は、コピーできます app/design/adminhtml/default/default/template/sales/order/view/info.phtml カスタム管理者のテーマに置き換えます

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

    このようなもので:

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

    そして、配送先住所についても同じことをします。理想的には、独自のブロッククラスにシングルトンに電話をかけますが、簡潔にするためにコードをテンプレートファイルに入れます。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top