Как предотвратить редактирование узла, когда этот узел имеет определенный статус рабочего процесса
Я использую Drupal 7, и я хотел бы предотвратить издание некоторых узлов для определенных ролей пользователя, когда узел имеет определенный статус рабочего процесса.
Например, если узел имеет статус рабочего процесса "подтвержден", пользователь с ролью "вкладчик" не может его редактировать, но пользователь с ролью "проверяющий" хорошо.
Если статус рабочего процесса "проверять", обе роли пользователя могут редактировать его.
Можно ли реализовать этот тип процесса с помощью модулей "Правила" и "Рабочий процесс"?
1 ответ
Вы, вероятно, хотите использовать 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() вы найдете в документации по Drupal 7 API.
ВНИМАНИЕ: Если вы вошли в систему как пользователь с правами администратора (пользователь 1), вы сможете редактировать узел независимо от ваших правил hook_node_access(), поэтому убедитесь, что вы проверили это с "обычным" пользователем.