1

我使用 Drupal 7,并且当节点具有特定的工作流状态时,我想阻止为特定用户角色编辑某些节点。

例如,如果节点的工作流状态为“已验证”,则具有“贡献者”角色的用户无法对其进行编辑,但具有“验证者”角色的用户可以进行编辑。

如果工作流状态为“验证”,则两个用户角色都可以对其进行编辑。

是否可以使用“规则”和“工作流程”模块来实现这种流程?

4

1 回答 1

0

您可能想使用hook_node_access($node, $op, $account)。在您的一个模块中创建此挂钩。要在编辑时拒绝访问,请首先添加检查$op == "update"然后添加您的验证逻辑。拒绝访问返回NODE_ACCESS_DENY否则不返回任何内容或NODE_ACCESS_IGNORE

一个简单的例子如下:

function MYMODULE_node_access($node, $op, $account) {
  if (($op == "update") && ($node->type == "node_type_to_check")) {
    // Add your extra validation checks here
    // ...and if you then want to block access return the following
    return NODE_ACCESS_DENY;
  }
}

您将在 Drupal 7 API 文档中找到有关hook_node_access() 的更多信息。

警告:如果您以管理员用户(用户 1)身份登录,那么无论您的hook_node_access()规则如何,您都可以编辑节点,因此请确保使用“普通”用户进行测试。

于 2014-04-24T18:09:51.847 回答