특정 콘텐츠 유형에 대한보기 및 편집 권한이있는 사용자가 있습니다. 이는 모든 사용자에게 해당 유형의 모든 노드를보고 편집 할 수있는 권한을 부여합니다. 그러나 실제로 각 사용자마다 고유 한 노드를 만들어서 해당 사용자 만보고 편집 할 수 있도록하고 싶습니다. Drupal 7에서 어떻게해야합니까?
특정 콘텐츠 유형에 대한보기 및 편집 권한이있는 사용자가 있습니다. 이는 모든 사용자에게 해당 유형의 모든 노드를보고 편집 할 수있는 권한을 부여합니다. 그러나 실제로 각 사용자마다 고유 한 노드를 만들어서 해당 사용자 만보고 편집 할 수 있도록하고 싶습니다. Drupal 7에서 어떻게해야합니까?
답변:
기존 모듈을 사용하면 함께 그렇게 할 수 콘텐츠 액세스 (함께 사용, 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;
}
이 후크 구현을 사용하면 작성하는 해당 컨텐츠 유형의 각 노드에 제공된 액세스 권한을 수동으로 편집 할 필요가 없습니다. 해당 노드의 액세스 권한을 변경할 필요가 없으므로 노드 소유자를 변경하는 것이 더 쉽습니다. 코드는 노드의 소유자 (또는 작성자)로 설정된 사용자에게 업데이트 및보기 권한을 자동으로 부여합니다.
당신이 말하는 것은 Drupal 노드 액세스 제어입니다.
노드 액세스 제어에 대한 코어의 내장 지원은 오히려 과정이며 역할별로 노드를보기 위해 액세스를 제어하려면 일종의 노드 액세스 제어 모듈을 사용해야합니다. Drupal.org 에는 모든 노드 액세스 모듈을 나열 하는 페이지 가 있으며 각 모듈 에 대한 캡슐 검토가 있습니다. 액세스 제어에 적합한 모듈을 찾을 수 있는지 확인하려면 해당 페이지를 살펴보십시오.
플렉시 액세스 모듈은로, 사용자의 요구 사항과 가장 가까운 모듈 것 같다 주요 기능은 오히려 역할보다는 또는 분류 용어로, 개별 사용자에 대한 액세스를 제어 할 수 있도록하는 것입니다.
개별 사용자에 대한 ACL (액세스 제어 목록)을 설정할 수있는 작은 모듈입니다. 기본적으로 ACL 모듈 의 사용자 인터페이스 이므로 설치해야합니다.
Content Access 와 같은 고급 액세스 제어 모듈의 일부 기능이 없지만 적극적으로 유지 관리되며 현재 이슈 큐에 열린 버그가 없습니다.
공개 : 저는 Flexi Access의 관리자입니다.