ฉันกำลังทำงานในโครงการ Drupal 9 ฉันต้องการจำกัดการเข้าถึงโหนดด้วยรหัส 1083 สำหรับบทบาทผู้ใช้ "ผู้รับมอบสิทธิ์" สำหรับสิ่งนี้ฉันได้ใช้ hook_node_access_records()
และ hook_node_grants()
:
/**
* ใช้ hook_node_access_records()
*/
ฟังก์ชัน wtotfaf_user_node_access_records (NodeInterface $node) {
$grants = [];
ถ้า ($node->id() == 1083) {
$grants[] = [
'realm' => 'delegate_view_activity_tracker',
// การตั้งชื่ออาณาจักรนั้นขึ้นอยู่กับคุณ
'gid' => 12,
'grant_view' => 1,
'grant_update' => 0,
'grant_delete' => 0,
];
$grants[] = [
'realm' => 'administrator_view_activity_tracker',
// การตั้งชื่ออาณาจักรนั้นขึ้นอยู่กับคุณ
'gid' => 11,
'grant_view' => 1,
'grant_update' => 1,
'grant_delete' => 1,
];
$grants[] = [
'ขอบเขต' => 'editor_view_activity_tracker',
// การตั้งชื่ออาณาจักรนั้นขึ้นอยู่กับคุณ
'gid' => 13,
'grant_view' => 1,
'grant_update' => 1,
'grant_delete' => 1,
];
}
คืน $grants;
}
/**
* ใช้ hook_node_grants()
*/
ฟังก์ชัน wtotfaf_user_node_grants (บัญชี $, $op) {
$grants = [];
$roles = $account->getRoles();
ถ้า (in_array ('ผู้ดูแลระบบ' $ บทบาท)) {
$grants['administrator_view_activity_tracker'] = [11];
}
อื่น (in_array ('ผู้รับมอบสิทธิ์' $ บทบาท)) {
$grants['delegate_view_activity_tracker'] = [12];
}
อื่น (in_array ('บรรณาธิการ' $ บทบาท)) {
$grants['editor_view_activity_tracker'] = [13];
}
คืน $grants;
}
ใน db ฉันมีสิ่งนี้:
โหนดที่มีรหัส 251 ไม่พร้อมใช้งานสำหรับบทบาทอื่นหลังจากการเปลี่ยนแปลงของฉัน
เกิดอะไรขึ้นกับรหัส? ฉันจะจำกัดการเข้าถึงสำหรับบทบาทผู้ใช้ 'ผู้รับมอบสิทธิ์' สำหรับโหนด id 1083 เท่านั้นได้อย่างไร