我使用 Drupal 7,并且当节点具有特定的工作流状态时,我想阻止为特定用户角色编辑某些节点。
例如,如果节点的工作流状态为“已验证”,则具有“贡献者”角色的用户无法对其进行编辑,但具有“验证者”角色的用户可以进行编辑。
如果工作流状态为“验证”,则两个用户角色都可以对其进行编辑。
是否可以使用“规则”和“工作流程”模块来实现这种流程?
我使用 Drupal 7,并且当节点具有特定的工作流状态时,我想阻止为特定用户角色编辑某些节点。
例如,如果节点的工作流状态为“已验证”,则具有“贡献者”角色的用户无法对其进行编辑,但具有“验证者”角色的用户可以进行编辑。
如果工作流状态为“验证”,则两个用户角色都可以对其进行编辑。
是否可以使用“规则”和“工作流程”模块来实现这种流程?
您可能想使用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()规则如何,您都可以编辑节点,因此请确保使用“普通”用户进行测试。