ユーザーの役割は意図したとおりに機能しません
-
16-10-2019 - |
質問
販売注文の下でビューアクションのみにアクセスするためのユーザーロールを作成すると、注文情報ページの請求および配送先住所の編集をユーザーが拒否しません。
それを修正する方法はありますか?
解決
独自のコントローラーの交換を作成します
Mage_Adminhtml_Sales_OrderController
.コントローラーで、作成します
_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(); }
あなたの中で
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>
これで、ユーザーの編集アドレス画面を有効にして無効にできます。
これらのユーザーからリンクを隠したい場合は、コピーできます
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; ?>
そして、配送先住所についても同じことをします。理想的には、独自のブロッククラスにシングルトンに電話をかけますが、簡潔にするためにコードをテンプレートファイルに入れます。
所属していません magento.stackexchange