Tôi đang làm việc trên một dự án Drupal 9. Tôi cần hạn chế quyền truy cập vào nút có id 1083 cho vai trò người dùng "đại biểu". Đối với điều này tôi đã sử dụng hook_node_access_records()
và hook_node_grant()
:
/**
* Triển khai hook_node_access_records().
*/
chức năng wtotfaf_user_node_access_records(NodeInterface $node) {
$grant = [];
if ($node->id() == 1083) {
$grant[] = [
'vương quốc' => 'delegate_view_activity_tracker',
// Việc đặt tên cho vương quốc là tùy thuộc vào bạn.
'gid' => 12,
'cấp_view' => 1,
'cấp_cập nhật' => 0,
'cấp_xóa' => 0,
];
$grant[] = [
'vương quốc' => 'administrator_view_activity_tracker',
// Việc đặt tên cho vương quốc là tùy thuộc vào bạn.
'gid' => 11,
'cấp_view' => 1,
'cấp_cập nhật' => 1,
'cấp_xóa' => 1,
];
$grant[] = [
'vương quốc' => 'editor_view_activity_tracker',
// Việc đặt tên cho vương quốc là tùy thuộc vào bạn.
'gid' => 13,
'cấp_view' => 1,
'cấp_cập nhật' => 1,
'cấp_xóa' => 1,
];
}
trả lại $grant;
}
/**
* Triển khai hook_node_grants().
*/
function wtotfaf_user_node_grants($account, $op) {
$grant = [];
$roles = $account->getRoles();
if (in_array('quản trị viên', $roles)) {
$grants['administrator_view_activity_tracker'] = [11];
}
otherif (in_array('delegate', $roles)) {
$grants['delegate_view_activity_tracker'] = [12];
}
otherif (in_array('editor', $roles)) {
$grants['editor_view_activity_tracker'] = [13];
}
trả lại $grant;
}
Trong db tôi có cái này:
Nút có id 251 không khả dụng cho các vai trò khác sau khi tôi thay đổi.
Điều gì là sai với mã? Làm cách nào tôi có thể hạn chế quyền truy cập đối với vai trò người dùng 'đại biểu' chỉ cho id nút 1083?