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