Как предотвратить редактирование узла, когда этот узел имеет определенный статус рабочего процесса

Я использую 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(), поэтому убедитесь, что вы проверили это с "обычным" пользователем.

Другие вопросы по тегам