Opencart自定义模块权限

时间:2013-05-29 14:39:00

标签: php opencart

我正在为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');

3 个答案:

答案 0 :(得分: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');
}

答案 1 :(得分:1)

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

我的解决方案是 file - controller / module / 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

答案 2 :(得分:1)

通常您可以在模块概述中安装模块/扩展,因此在ADMIN - &gt;下扩展程序 - &gt;模块。在这里,用户必须拥有modify extension/modules的权限才能安装/卸载/修改模块。

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

        $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的标准,或者我们不是在谈论扩展/模块......