0

我正在扩展 opencart,并且正在为目录构建一个自定义控制器,用于通过 CSV 上传产品。当我尝试查看 catalog/upload 时出现此错误You do not have permission to access this page, please refer to your system administrator.

我想我需要更改数据库中的权限,并找到了一个这样做的函数

$this->model_user_user_group->addPermission($this->user->getId(), 'access', 'catalog/upload'); $this->model_user_user_group->addPermission($this->user->getId(), 'modify', 'catalog/upload');

我把它放在一个模块中,其唯一目的是在安装时添加这些权限

<?php
    class ControllerModuleInstl extends Controller {
        public function install() {
            $this->load->model('user/user_group');
            $this->model_user_user_group->addPermission($this->user->getId(), 'access', 'catalog/upload');
            $this->model_user_user_group->addPermission($this->user->getId(), 'modify', 'catalog/upload');

            if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
                $this->model_setting_setting->editSetting('instl', $this->request->post);       

                $this->session->data['success'] = $this->language->get('text_success');

                $this->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'));
            }
        }
    }
?>

我点击安装,我收到一条成功消息(但是没有页面重定向),当我检查数据库时,权限没有改变。

我发现这很难调试,因为通常调试时我会使用 echo 等,但显然你不能用这种大小的应用程序做这种事情(我通常只写小脚本),调试 opencart 的最佳方法是什么,一步一步来,还有谁能告诉我为什么我的权限没有被改变?

谢谢!

4

3 回答 3

1

这是我遇到这个问题时如何解决的。Opencart 通过将 php 数组序列化到数据库来存储它的权限。编写一个小实用程序来获取该记录并对其进行反序列化,然后将您的权限添加到它,然后对其进行序列化并将其写回。

于 2013-08-01T09:08:33.703 回答
1

要回答您的简单问题,您可以使用:

$this->log->write('message');

代替echo. 它将消息发送到 Opencart 中管理面板的错误日志。

于 2013-08-01T23:07:25.090 回答
0

您知道 Opencart 的“addPermission”功能,它使用“用户组 ID”设置参数,而不是您在上面设置的“用户 ID”。所以:

您可以通过以下方式获取用户组 ID:

$user_group_id = $this->user->getGroupId();

之后,您为此用户组添加权限“访问/修改”。

$this->model_user_user_group->addPermission($user_group_id, 'access', 'catalog/upload');

$this->model_user_user_group->addPermission($user_group_id, 'modify', 'catalog/upload');
于 2019-03-06T04:25:21.113 回答