Lucrez la un proiect Drupal 9. Trebuie să restricționez accesul la nodul cu id 1083 pentru rolul de utilizator „delegat”. Pentru asta am folosit hook_node_access_records()
și hook_node_grants()
:
/**
* Implementează hook_node_access_records().
*/
funcția wtotfaf_user_node_access_records(NodeInterface $nod) {
$granturi = [];
if ($nod->id() == 1083) {
$grants[] = [
'realm' => 'delegate_view_activity_tracker',
// Numirea tărâmului depinde de tine.
'gid' => 12,
'grant_view' => 1,
'grant_update' => 0,
'grant_delete' => 0,
];
$grants[] = [
'realm' => 'administrator_view_activity_tracker',
// Numirea tărâmului depinde de tine.
'gid' => 11,
'grant_view' => 1,
'grant_update' => 1,
'grant_delete' => 1,
];
$grants[] = [
'realm' => 'editor_view_activity_tracker',
// Numirea tărâmului depinde de tine.
'gid' => 13,
'grant_view' => 1,
'grant_update' => 1,
'grant_delete' => 1,
];
}
returnează $grants;
}
/**
* Implementează hook_node_grants().
*/
funcția wtotfaf_user_node_grants($cont, $op) {
$granturi = [];
$roluri = $cont->getRoles();
if (in_array('administrator', $roluri)) {
$grants['administrator_view_activity_tracker'] = [11];
}
elseif (in_array('delegat', $roluri)) {
$grants['delegate_view_activity_tracker'] = [12];
}
elseif (in_array('editor', $roluri)) {
$grants['editor_view_activity_tracker'] = [13];
}
returnează $grants;
}
In db am asta:
Nodul cu id 251 nu este disponibil pentru alte roluri după modificările mele.
Ce este în neregulă cu codul? Cum pot restricționa accesul pentru rolul de utilizator „delegat” numai pentru id-ul nodului 1083?