如何在此节点具有特定工作流状态时阻止编辑节点

时间:2012-11-19 14:41:00

标签: drupal-7 workflow user-permissions drupal-rules

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

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

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

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

1 个答案:

答案 0 :(得分: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;
  }
}

您可以找到有关 hook_node_access() in the Drupal 7 API docs的更多信息。

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

相关问题