it-swarm-ko.tech

사용자는 어떻게 해당 유형의 모든 노드가 아닌 하나의 특정 노드에만 액세스 할 수 있습니까?

특정 콘텐츠 유형에 대한보기 및 편집 권한이있는 사용자가 있습니다. 이는 모든 사용자에게 해당 유형의 모든 노드를보고 편집 할 수있는 권한을 부여합니다. 그러나 실제로 각 사용자마다 고유 한 노드를 만들어서 해당 사용자 만보고 편집 할 수 있도록하고 싶습니다. Drupal 7에서 어떻게 할 수 있습니까?

10
Ek Kosmos

기존 모듈을 사용하면 Content Access 로이를 수행 할 수 있습니다. ACL 를 사용하면 권한을 다음과 같이 설정할 수 있습니다. 각 사용자의 노드에 액세스하십시오.
즉, 각 노드에 대한 액세스 권한을 수동으로 설정해야합니다.

노드를 수동으로 작성하고 노드의 소유자로 설정된 사용자 만 해당 노드를보고 편집 할 수있게하려면 사용자 정의 모듈 (즉, 사이트에 사용)하고 다음과 같이 hook_node_access() 을 구현하십시오 (코드는 읽기 쉽도록 작성되었습니다).

function mymodule_node_access($node, $op, $account) {
  // We are interested to existing objects. When the node is being created, Drupal passed the node type instead of the node object. 
  if (is_object($node)) {
    $bool = (
      ($node->type == 'the node type you need to check') && 
      (($op == 'view') || ($op == 'update'))
    );
    if ($bool) {
      if ($account->uid == $node->uid) {
        return NODE_ACCESS_ALLOW;
      }
      else {
        return NODE_ACCESS_DENY;
      }
    }
  }

  return NODE_ACCESS_IGNORE;
}

이 후크 구현을 사용하면 작성하는 해당 컨텐츠 유형의 각 노드에 제공된 액세스 권한을 수동으로 편집 할 필요가 없습니다. 해당 노드의 액세스 권한을 변경할 필요가 없으므로 노드 소유자를 변경하는 것이 더 쉽습니다. 코드는 노드의 소유자 (또는 작성자)로 설정된 사용자에게 업데이트 및보기 권한을 자동으로 부여합니다.

11
kiamlaluno

이를 수행하기 위해 특별한 모듈이나 사용자 정의 코드가 필요하지 않습니다. 해당 노드를 수동으로 작성하고 적절한 사용자를 노드의 소유자 (작성자)로 설정하고이 컨텐츠 유형에 대한 권한을 설정하여 자신의 컨텐츠 만 편집하고 (이 유형의 컨텐츠는 편집하지 않음) 완료하십시오.

5
Petr Svehla

당신이 말하는 것은 Drupal 노드 액세스 제어입니다. 이는 커다란 주제입니다.

노드 액세스 제어에 대한 코어의 내장 지원은 물론 과정이며, 역할별로 노드를보기 위해 액세스를 제어하려면 일종의 노드 액세스 제어 모듈을 사용해야합니다. Dupral.org에 모든 노드 액세스 모듈을 나열하는 페이지 이 있으며 각 모듈에 대한 캡슐 검토가 있습니다. 액세스 제어에 적합한 모듈을 찾을 수 있는지 확인하려면 해당 페이지를 살펴보십시오.

Flexi Access 모듈은 기본 함수 를 사용하기 때문에 요구 사항과 가장 일치하는 모듈 인 것 같습니다. 역할 또는 분류 용어가 아닌 개별 사용자에 대한 액세스를 제어합니다.

개별 사용자에 대한 ACL (액세스 제어 목록)을 설정할 수있는 작은 모듈입니다. 기본적으로 ACL 모듈의 사용자 인터페이스이므로 해당 모듈도 설치해야합니다.

Content Access 와 같은 고급 액세스 제어 모듈의 일부 기능이 없지만 적극적으로 유지 관리되며 현재 이슈 큐에 열린 버그가 없습니다.

공개 : 저는 Flexi Access의 관리자입니다.

1
Free Radical