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'));
            }
        }
    }
?>

インストールをクリックすると、成功メッセージが表示されます (ただし、ページ リダイレクトはありません)。DB を確認すると、アクセス許可が変更されていません。

通常、デバッグするときはエコーなどを使用するため、デバッグが難しいと思いますが、このサイズのアプリケーションではこの種のことを実行できないことは明らかです(通常は小さなスクリプトを書くだけです)。opencartをデバッグする最良の方法は何ですか、それをステップスルーして、私の権限が変更されていない理由を誰か教えてもらえますか?

ありがとう!

4

3 に答える 3

1

Here is how i fixed this problem when i faced it. Opencart stores it permission by serializing a php array to the database. write a small utility to grab that record and deserialize it and then add your permissions to it then serialize and write it back.

于 2013-08-01T09:08:33.703 に答える