it-swarm-vi.com

Làm thế nào người dùng chỉ có thể truy cập một nút cụ thể và không phải tất cả các nút thuộc loại đó?

Tôi có một người dùng có quyền xem và chỉnh sửa một loại nội dung cụ thể. Điều này cung cấp đặc quyền cho tất cả người dùng để xem và chỉnh sửa tất cả các nút của loại đó. Nhưng thực ra, tôi muốn tạo cho mỗi người dùng một nút duy nhất, để chỉ người dùng đó mới có thể xem và chỉnh sửa nó. Làm thế nào tôi có thể làm điều này trong Drupal 7?

10
Ek Kosmos

Sử dụng một mô-đun hiện có, bạn có thể làm điều đó với Truy cập nội dung , mà (khi được sử dụng cùng nhau ACL ) cho phép đặt quyền thành truy cập một nút cho mỗi người dùng.
[.___.] Điều này có nghĩa là bạn cần đặt quyền truy cập theo cách thủ công cho mỗi nút.

Nếu bạn tự tạo các nút, và sau đó bạn muốn chắc chắn rằng chỉ người dùng được đặt làm chủ sở hữu của nút mới có thể xem (và chỉnh sửa) nó, thì bạn có thể tạo mô-đun tùy chỉnh (có nghĩa là mô-đun được sử dụng cho trang web của bạn) và triển khai hook_node_access() như sau (mã đã được viết để dễ đọc hơn):

function mymodule_node_access($node, $op, $account) {
  // We are interested to existing objects. When the node is being created, Drupal passed the node type instead of the node object. 
  if (is_object($node)) {
    $bool = (
      ($node->type == 'the node type you need to check') && 
      (($op == 'view') || ($op == 'update'))
    );
    if ($bool) {
      if ($account->uid == $node->uid) {
        return NODE_ACCESS_ALLOW;
      }
      else {
        return NODE_ACCESS_DENY;
      }
    }
  }

  return NODE_ACCESS_IGNORE;
}

Sử dụng triển khai hook này, bạn không cần chỉnh sửa thủ công các quyền truy cập được cung cấp cho từng nút của loại nội dung mà bạn tạo. Thay đổi chủ sở hữu của nút cũng sẽ dễ dàng hơn, vì bạn không cần thay đổi quyền truy cập của nút đó; mã sẽ tự động cấp cập nhật và xem quyền cho người dùng được đặt làm chủ sở hữu (hoặc tác giả) của nút.

11
kiamlaluno

Bạn không cần bất kỳ mô-đun đặc biệt hoặc mã tùy chỉnh để làm điều này. Chỉ cần tạo thủ công các nút đó, đặt người dùng thích hợp làm chủ sở hữu (tác giả) của các nút và đặt quyền cho loại nội dung này để chỉ chỉnh sửa nội dung (không chỉnh sửa bất kỳ nội dung nào thuộc loại này) và bạn đã hoàn tất.

5
Petr Svehla

Điều bạn đang nói đến là Drupal, đây là một chủ đề rất lớn.

Hỗ trợ tích hợp của lõi cho điều khiển truy cập nút là điều tất nhiên và để kiểm soát truy cập để xem nút theo vai trò, bạn phải sử dụng một số loại mô-đun điều khiển truy cập nút. Có một trang tại Drupal.org liệt kê tất cả các mô-đun truy cập nút , với đánh giá viên nang của từng mô-đun. Tôi đề nghị bạn hãy xem trang đó để xem liệu bạn có thể tìm thấy một mô-đun phù hợp để kiểm soát truy cập hay không.

Mô-đun Truy cập Flexi dường như là mô-đun phù hợp nhất với yêu cầu của bạn, vì hàm chính của nó là để cho bạn kiểm soát quyền truy cập cho người dùng cá nhân, thay vì theo vai trò hoặc theo thuật ngữ phân loại.

Đây là một mô-đun nhỏ cho phép bạn thiết lập ACL (danh sách kiểm soát truy cập) cho từng người dùng. Về cơ bản, nó là một giao diện người dùng cho mô đun ACL , vì vậy bạn cũng cần phải cài đặt nó.

Nó thiếu một số tính năng của các mô-đun kiểm soát truy cập nâng cao hơn, chẳng hạn như Truy cập nội dung , nhưng nó được duy trì tích cực và hiện tại không có lỗi mở trong hàng đợi vấn đề.

Tiết lộ: Tôi là người duy trì truy cập Flexi.

1
Free Radical