1

드루팔 (Drupal) 6.x하나 이상의 콘텐츠 유형에 대한 후크 퍼가스트

나는 4 개의 다른 콘텐츠 유형을 관리하는이 모듈을 가지고 있습니다. 그렇다면 동일한 모듈 내의 각 콘텐츠에 대한 사용 권한을 어떻게 정의합니까? 그게 가능한가? 나는 각 콘텐츠 유형에 대한 권한을 정의하는 방법을 알 수 없다. cu_fook은 모듈 이름으로 명명되어야하고 컨텐트 유형에 대한 권한 기반을 반환하는 hook_access $ node와 같은 인수가 없다. 방법은 다음과 같습니다. -

function mymodule_perm() 
{ 
if(content1)  
return array(
    'create content1 node', 
    'edit content1 nodes', 
    'delete content1 nodes', 
); 
if(content2)  
return array(
    'create content2 node', 
    'edit content2 nodes', 
    'delete content2 nodes', 
); 
if(content3)  
return array(
    'create content3 node', 
    'edit content3 nodes', 
    'delete content3 nodes', 
); 
....... 
} 

도움을 주시면 감사하겠습니다.

답변

6

일반적으로 노드 모듈이 node_perm()에서 콘텐츠 형식에 대한 사용 권한을 직접 만들 필요가 없습니다.

$perms[] = 'create '. $name .' content'; 
    $perms[] = 'delete own '. $name .' content'; 
    $perms[] = 'delete any '. $name .' content'; 
    $perms[] = 'edit own '. $name .' content'; 
    $perms[] = 'edit any '. $name .' content'; 

그 외에, 당신은 당신의 모듈 hook_perm() 구현을 추가 권한의 수를 선언 할 수 있습니다 (만큼 : 다음과 같이 hook_node_info()에 선언 모든 컨텐츠 유형의 경우, 노드 모듈은 자동으로 권한의 고정 세트를 작성합니다 그들은 고유합니다) 당신이 원하는대로 코드에서 사용하십시오.

중요한 것은 여기서 권한은 그 자체로별로 효과가 없다는 것입니다. 권한 페이지에 표시되는 이름으로 역할에 부여 될 수 있습니다. user_access() 호출을 통해 코드를 사용하면 '의미있는'언어가됩니다.

예를 들어, 각 콘텐츠 유형에 대해 특별한 새로운 권한을 직접 만들고 싶다면 그냥 한번만 hook_perm()에 선언하면됩니다 (따라서 어떤 인수도 필요하지 않습니다. 한 문자열 만 반환하면됩니다. 귀하가 생성하고자하는 권한 당).

+0

각 콘텐츠에 대한 사용 권한 문자열을 놓친 방법은 전체적으로 문자열로 반환 될 수 있습니다! 무리 감사. – Andrew

1

일반적으로 말해서 둘 이상의 콘텐츠 형식을 구현하는 모듈은 정의한 모든 사용 권한을 hook_perm()에서 반환합니다. Drupal이 구현 된 권한을 요청한 콘텐츠 유형을 알 수있는 방법이 없습니다.
Drupal은 항상 모듈과 관련된 모든 구현 된 권한 목록을 모듈에 요청합니다. 예를 들어 설정 페이지에 대한 권한 만 구현하는 모듈이 있습니다.

+0

예를 들어, cuz hook_perm에는 어떤 노드에 대한 권한을 묻는 다른 후크와 같은 인수가 없다는 것을 알 수있는 방법이 없습니다. – Andrew