Điểm:0

Các giá trị được trả về từ hook_node_access_records() không được coi là cho phép truy cập

lá cờ cn

Tôi đang triển khai một giải pháp trong Drupal 9, trong đó người dùng chỉ được phép xem các nút thuộc cùng một nhóm của họ. Nếu một nút không thuộc về bất kỳ nhóm nào, thì họ sẽ có thể nhìn thấy nút đó. Tôi đã sử dụng hook_node_grants() để chỉ định các khoản trợ cấp phù hợp cho người dùng hiện tại và hook_node_access_records() để đặt cấp chế độ xem cho mỗi nút, như được đề xuất trong Làm cách nào để lọc chế độ xem theo kết quả của hook_node_access?

Khi truy cập một nút mà người dùng không được phép nhìn thấy, người dùng sẽ gặp lỗi 403, như kết quả mong đợi. Tuy nhiên, trên một chế độ xem, nút vẫn hiển thị.

Như một giải pháp thay thế, tôi có thể thực hiện hook_views_query_alter() và thêm một điều kiện truy cập, nhưng tôi thích giải pháp chung hơn.

Đây là mã tôi đang sử dụng.

 function mymodule_node_access_records(NodeInterface $node) {
  if ($node->hasField('field_group') && !empty($term = $node->field_group->getValue())) {
    $ hạn = đặt lại ($ hạn);
    $grant[] = [
      'vương quốc' => 'mymodule_realm',
      'gid' => $term['target_id'],
      'cấp_view' => 1,
      'cấp_cập nhật' => 0,
      'cấp_xóa' => 0,
      'ưu tiên' => 0,
    ];

    trả lại $grant;
  }
}

 function mymodule_node_grants(AccountInterface $account) {
  $grant = [];
  if ($group = checkGroupHelper($account)) {
    $grants['mymodule_realm'] = $group;
  }
  trả lại $grant;
}
Điểm:0
lá cờ cn

Tôi đã quản lý để làm việc này bằng cách thêm thẻ Truy vấn nút_access trong cài đặt Truy vấn của chế độ xem của tôi. Nó bắt đầu lọc kết quả dựa trên bảng node_access. Chưa bao giờ xem nó như một yêu cầu, vì vậy điều đó hơi lạ, nhưng hy vọng nó có thể giúp ích cho những người khác đang thắc mắc như tôi.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.