Я работаю над проектом Drupal 9. Мне нужно ограничить доступ к узлу с идентификатором 1083 для роли «делегата». Для этого я использовал hook_node_access_records()
и крючок_node_grants ()
:
/**
* Реализует hook_node_access_records().
*/
функция wtotfaf_user_node_access_records (NodeInterface $ узел) {
$гранты = [];
если ($node->id() == 1083) {
$ гранты [] = [
'realm' => 'delegate_view_activity_tracker',
// Название области зависит от вас.
'гид' => 12,
'грант_просмотр' => 1,
'грант_обновление' => 0,
'грант_удалить' => 0,
];
$ гранты [] = [
'область' => 'administrator_view_activity_tracker',
// Название области зависит от вас.
'гид' => 11,
'грант_просмотр' => 1,
'грант_обновление' => 1,
'грант_удалить' => 1,
];
$ гранты [] = [
'область' => 'editor_view_activity_tracker',
// Название области зависит от вас.
'гид' => 13,
'грант_просмотр' => 1,
'грант_обновление' => 1,
'грант_удалить' => 1,
];
}
возврат $грантов;
}
/**
* Реализует hook_node_grants().
*/
функция wtotfaf_user_node_grants($account, $op) {
$гранты = [];
$roles = $account->getRoles();
если (in_array('администратор', $роли)) {
$grants['administrator_view_activity_tracker'] = [11];
}
elseif (in_array('делегат', $роли)) {
$grants['delegate_view_activity_tracker'] = [12];
}
elseif (in_array('редактор', $роли)) {
$grants['editor_view_activity_tracker'] = [13];
}
возврат $грантов;
}
В бд у меня так:
Узел с id 251 недоступен для других ролей после моих изменений.
Что не так с кодом? Как я могу ограничить доступ для роли пользователя «делегата» только для идентификатора узла 1083?