我正在为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');
发布于 2013-05-29 23:56:55
这段代码应该放在控制器的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-30 06:20:49
在任何情况下,您都需要创建一个模块来添加权限。
我的解决方案是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
发布于 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行
$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的标准,或者我们不是在谈论扩展/模块……
https://stackoverflow.com/questions/16816887
复制相似问题