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


10

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


1
모듈을 사용하여 어떻게 할 수 있습니까, 아니면 필요한 코드를 작성하여 어떻게 할 수 있습니까?
kiamlaluno

다른 방법은 필드를 사용하여 사용자 프로파일을 사용하고 확장하는 노드 거부입니다.
ya.teck

사용자 당이 노드는 일종의 사용자 프로필 요구 사항을 충족하는 것처럼 들립니다. 별도의 노드 여야합니까, 아니면 추가 필드로 사용자 엔티티 자체를 확장하는 것이 더 좋지 않습니까?
Alfred Armstrong

Drupal 7은 사용자 당 노드보기 권한을 제거했습니다. 당신은 다시이 모듈로 가져올 수 drupal.org/project/node_view_permissions
giorgio79

사용 모듈은 "nodeaccess"링크가 drupal.org/project/nodeaccess 내가 당신을 도울 것입니다 바랍니다
마 히펄 인 Purohit

답변:


11

기존 모듈을 사용하면 함께 그렇게 할 수 콘텐츠 액세스 (함께 사용, 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;
}

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


5

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


1

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

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

플렉시 액세스 모듈은로, 사용자의 요구 사항과 가장 가까운 모듈 것 같다 주요 기능은 오히려 역할보다는 또는 분류 용어로, 개별 사용자에 대한 액세스를 제어 할 수 있도록하는 것입니다.

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.