2013-05-29 4 views
1

opencart 용 모듈/플러그인을 작성 중이므로 사용자 그룹 권한을 자동 생성하는 것이 좋습니다.Opencart 맞춤 모듈 권한

모듈이 설치되면 사용자 권한 제어로 이동하여 수동으로 권한을 추가해야합니다. 그 불필요한 단계, 그것은 뛰어 내리기 매우 좋을 것이다.

현재 VqMod를 사용하여 (예 : 관리자 메뉴에 항목을 추가하는 것과 같이) 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'); 
+0

사용자 그룹 모델에없는 것으로 나타났습니다. 일단 모듈을 제거하면 권한을 제거하는 기능 ... 컨트롤러에서 권한을 직접 제거해야합니까? –

+0

https://github.com/opencart/opencart/pull/693 –

답변

1

이 코드는 컨트롤러의 install() 방법에 위치해야합니다. 이것은 관리자 영역에 EXTENSIONS > MODULES 아래에 mod가 설치 될 때 실행됩니다. 컨트롤러에 이것을 추가하면 작동하지 않을 것입니다. (테스트 안 함)

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

모듈로 만들지 않았습니다. 내 자신의 컨트롤러 유형을 사용하고 있습니다. –

+0

내 자신의 컨트롤러 유형을 사용하고 있습니다. 컨트롤러가 실행 권한이없는 경우 opencart가 모듈 페이지에서이 기능을 어떻게 실행합니까? –

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

그리고 링크로 이동/관리/인덱스입니다. php? route = extension/module/install & token = & extension = test_import

1

일반적으로 모듈을 설치합니다. 모듈 개요 내에서 긴장감이 있으므로 ADMIN -> Extensions -> Modules 아래에 있습니다. 여기서 사용자는 모듈을 설치/제거/수정할 수 있으려면 extension/modules에 대한 modify 권한이 있어야합니다.

이제 내선 번호 컨트롤러에 install 메서드가있는 경우 admin/controller/extension/module.php::install() 메서드 내에서 호출됩니다. 새 모듈 경우

따라서
 $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']); 

이럴가 아무런 조치가 필요하지 않습니다 : 어쨌든, 당신은 그들이 이미 한 방법에 의해 추가 (체크 라인 115-118 admin/controller/extension/module.php의)되어 수동으로 권한을 추가 할 필요가 없습니다 OC 모듈 내에 설치되며 정상적인 방식으로 설치됩니다. 그렇지 않다면 (다른 곳으로 낳기 때문에) 뭔가 빠뜨린 것 같아요. 아니면 OC 표준을 따르지 않았거나 우리가 확장 모듈에 대해 말하지 않고있는 것 같아요.

+0

모델을 만들어야하는 경우 어떻게해야합니까? 모델 폴더 아래에 모듈 폴더가 없습니다 ... –

+0

@ FábioSilva 그건 문제가 아니에요. 그런 폴더를 만들고'$ this-> model-> load ('module/mymodel'); '처럼 당신의 모델을로드하면됩니다. 그런 다음 다른 모델처럼 사용하십시오 :'$ this-> model_module_mymodel-> someMethod();'. – shadyyx