将配置保存为非管理员用户时,Magento 付款方式访问被拒绝

Posted

技术标签:

【中文标题】将配置保存为非管理员用户时,Magento 付款方式访问被拒绝【英文标题】:Magento Payment Methods Access Denied when Saving Configuration as non admin user 【发布时间】:2018-10-17 07:59:12 【问题描述】:

我认为核心 Mage_Paypal 模块在 adminhtml.xml 中的 ACL 代码存在错误。

在第 170 行的 app/core/Mage/Adminhtml/Model/Config/Data.php 中,路径“paypal/general/merchant_country”似乎不是不允许的:

if (!Mage::getSingleton('admin/session')->isAllowed($configPath)) 
                        Mage::throwException('Access denied.');
                    

adminhtml.xml 文件是这样的:

 <acl>
    <resources>
        <admin>
            <children>
                <system>
                    <children>
                        <config>
                            <children>
                                <paypal>
                                    <title>PayPal Section</title>
                                </paypal>
                            </children>
                        </config>
                    </children>
                </system>
           </children>
        </admin>
    </resources>
</acl>

在 system.xml 中,我找不到任何可以保存配置值的 paypal 部分,只有一个字段“payment/account/merchant_country”,其 config_path 标记的值为“paypal/general/merchant_country”。

【问题讨论】:

您找到解决方案了吗?我遇到了同样的问题 【参考方案1】:

这不是 Mage_Paypal,这是 Mage_Adminhtml。问题是config_path的检查。

一个解决方案,我不是 100% 确定,在 Mage_Adminhtml_Model_Config_Data 中,替换第 175 行:

if (!Mage::getSingleton('admin/session')-&gt;isAllowed($configPath))

作者:

if (!Mage::getSingleton('admin/session')-&gt;isAllowed('system/config/'.substr($configPath, 0, strpos($configPath, '/'))))

(使用 Magento 1.9.4.3 测试)

【讨论】:

以上是关于将配置保存为非管理员用户时,Magento 付款方式访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

当付款通过PayPal进入时,如何阻止magento将付款状态设置为“已完成”

magento 将结帐付款重定向到第三方网关

Magento 自定义支付网关

magento 将结帐付款重定向到第三方网关

如何将 GSA Smartpay 支付与 Magento 集成?

如何将 CVV 字段添加到 Magento 结帐页面