1

我正在为 opencart 编写一个模块/插件,自动创建用户组权限会很好。

安装模块后,用户必须进入用户权限控制并手动添加权限。这是一个不必要的步骤,跳起来会很好。

由于我目前正在使用 VqMod 进行一些更改(例如在管理菜单中添加额外的项目),因此可以将路由添加到权限控制类中的忽略路由列表中,但我认为这不是很好选项,如果可能的话,我更喜欢插入权限。

我尝试在构造函数中使用 user_group 模型添加权限,但是将其添加到构造函数中不起作用。该类可能未在获得许可之前实例化。

$this->load->model('user/user_group');

$this->model_user_user_group->addPermission($this->user->getId(), 'access', 'test/import');
$this->model_user_user_group->addPermission($this->user->getId(), 'modify', 'test/import');
4

3 回答 3

1

此代码应放在install()控制器的方法中。这将在您的 mod 安装EXTENSIONS > MODULES在管理员区域下时运行。只需将其添加到您的控制器中,它应该可以工作(未经测试)

protected function install() {
    $this->load->model('user/user_group');

    $this->model_user_user_group->addPermission($this->user->getId(), 'access', 'test/import');
    $this->model_user_user_group->addPermission($this->user->getId(), 'modify', 'test/import');
}
于 2013-05-29T15:56:55.487 回答
1

通常,您从模块概述中安装模块/扩展,因此在 ADMIN -> Extensions -> Modules 下。在这里,用户必须拥有安装/卸载/修改模块modify的权限。extension/modules

现在,如果您的扩展的控制器具有install方法,它将从方法内调用admin/controller/extension/module.php::install()。无论如何,您不需要手动添加权限,因为它们已经通过上述方法添加(检查第 115-118 行admin/controller/extension/module.php):

        $this->load->model('user/user_group');

        $this->model_user_user_group->addPermission($this->user->getId(), 'access', 'module/' . $this->request->get['extension']);
        $this->model_user_user_group->addPermission($this->user->getId(), 'modify', 'module/' . $this->request->get['extension']);

因此恕我直言,如果新模块放置在 OC 的模块中并以正常方式安装,则无需执行任何操作。如果不是(所以它放在其他地方)我猜你错过了一些东西或者你没有遵循 OC 的标准或者我们不是在谈论扩展/模块然后......

于 2013-05-30T15:32:59.850 回答
1

在任何情况下,您都需要创建一个模块来添加权限。

我的解决方案是文件 - 控制器/模块/test_import.php

<? php  class ControllerModuleTestimport extends Controller {

    public function index() { 
        $this->redirect($this->url->link('test/import', 'token=' . $this->session->data['token'], 'SSL'));        
    }

public function install() {  
        $this->load->model('user/user_group');
        $this->model_user_user_group->addPermission($this->user->getId(), 'access', 'test/import');
        $this->model_user_user_group->addPermission($this->user->getId(), 'modify', 'test/import');
    }
} ?>

/language/english/module/test_import.php

<?php
// Heading
$_['heading_title']       = 'test_import';
?>

并通过链接 /admin/index.php?route=extension/module/install&token=&extension=test_import

于 2013-05-29T22:20:49.020 回答