首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Opencart自定义模块权限

Opencart自定义模块权限
EN

Stack Overflow用户
提问于 2013-05-29 22:39:00
回答 3查看 7.1K关注 0票数 1

我正在为opencart编写一个模块/插件,如果能自动创建用户组权限就好了。

模块安装完成后,用户必须进入用户权限控制并手动添加权限。这是一个不必要的步骤,这将是非常好的跳。

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

我试图在我的构造函数中添加user_group模型的权限,但添加到我的构造函数不起作用。在权限之前,类可能没有被实例化。

代码语言:javascript
运行
复制
$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');
EN

回答 3

Stack Overflow用户

发布于 2013-05-29 23:56:55

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

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2013-05-30 06:20:49

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

我的解决方案是file - controller/module/test_import.php

代码语言:javascript
运行
复制
<? 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

代码语言:javascript
运行
复制
<?php
// Heading
$_['heading_title']       = 'test_import';
?>

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

票数 1
EN

Stack Overflow用户

发布于 2013-05-30 23:33:00

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

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

代码语言:javascript
运行
复制
        $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的标准,或者我们不是在谈论扩展/模块……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16816887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档