Posted by Alpha5 on January 24, 2009 at 8:23am
Hiện tôi vẫn dùng các module để giới hạn quyền truy cập vào một node, dùng content access và acl.
Giờ tôi muốn dùng code để tự phân quyền cho một node thì làm thế nào? Ví dụ, viết một đoạn code để grant view, update, delete của node id = 2 cho role id 80.
Hoặc mọi người có thể cho link xem một ví dụ tương tự được không?
Comments
Sử dụng hook_nodeapi
* nid: 2
* gid: 80 (giả sử role ID này là nhóm người dùng đã đóng phí thành viên trong tháng)
* realm: đã đóng phí thành viên
* grant_view: 1
* grant_update: 0
* grant_delete: 0
function custom_node_grants ($account, $op) {
$grants['đã đóng phí thành viên'] = array (80); // xử lý kiểu gì để ra số 80 này là việc của bạn
return $grants;
}
Khi drupal kiểm tra quyền hạn người dùng truy cập vào node 2 với các thao tác RUD nó sẽ thực hiện một câu truy vấn có dạng:
Nếu con số trả về là 0 thì người dùng không có quyền, >=1 thì có quyền (Xem hàm node_access).
--
Tôi không nắm rõ các
Tôi không nắm rõ các hàm trong drupal và php nên cũng chưa hiểu được cách làm ntn với chỉ dẫn trên. Thehong nên cho ví dụ cụ thể với module content_access thì mới hiểu được.
Tôi thấy việc gán quyền cho node là do table node_access đảm nhiệm nên cứ chọc thẳng vào sql bằng câu lệnh
INSERT INTO node_access (nid, gid, realm, grant_view, grant_update, grant_delete) VALUES (2, 80, 'content_access_rid', 1, 1, 0);
Vì tôi sử dụng module content access để có giao diện dễ nhìn nên vấn đề gặp phải là khi đó trong bảng Access Control của node 2 sẽ không hiện nút tích ở role 80. Vậy có 2 cách để đạt được nút tích cho role 80:
Vậy thehong có thể viết 2 ví dụ cụ thể cho 2 cách làm trên được không?