Drupal quản lý và phân quyền quản trị trên website dựa vào role. Mặc định ban đầu có 2 role, Authemticate và Anynomous. Người quản trị website có thể tạo thêm nhiều role mới. Mỗi role sẽ được phân quyền truy khác nhau để truy cập website tùy thuộc vào sự phân quyền của người quản trị. User thuộc role nào sẽ kế thừa quyền truy cập của role đó. Một user có thể thuộc nhiều role do đó có thể sử dụng tất cả quyền từ những role mà họ kế thừa.
I. Yêu cầu và hiện trạng thực tế của Drupal:
1. Yêu cầu:
Giả sử cần xây dựng website có các nhóm user quản trị đại diện các bộ phận khác nhau, mỗi bộ phận đó có nhiều user và có quyền khác nhau, cụ thể như sau:
- Xây dựng hệ thống gồm có các nhóm user (role) tương ứng với từng bộ phận.
- Mỗi nhóm user có các quyền khác nhau.
- Mỗi user có thể có một hoặc nhiều roles.
- User sẽ kế thừa quyền từ role mà họ gán.
- Mỗi user quản trị có một level, level được chia từ thấp đến cao, level 1 là thấp nhất
- Nếu 2 user có cùng một role thì user có level cao hơn thì sẽ có quyền lớn hơn.
- User quản trị chỉ được tạo user mới hoặc phân quyền cho user có level thấp hơn trong giới quyền của role mà họ được cấp.

Hình 1: Phân quyền user được xây dựng dựa trên role
2.1. Ưu điểm:
- Đơn giản: Việc phân quyền theo role đơn giản do không phải phân quyền cho từng user. Tránh được sự nhầm lẫn và rắc rối khi muốn phân cùng một quyền cho nhiều user
- Linh hoạt: Người quản trị có thể tạo thêm nhiều role được phân quyền khác nhau.
- An toàn: User chỉ có quyền trong giới của role do đó không thể sử dụng được các quyền không thuộc role đó.
2.2. Khuyết điểm:
Khuyết điểm của phân quyền theo Role là không phân biệt được cấp bậc của User. Tất cả User thuộc cùng một Role sẽ có cấp bậc ngang nhau điều này gây khó khăn trong việc phân quyền quản trị user.
Ví dụ:
Khi một user có quyền thấp hơn (nằm trong một roles có quyền thấp hơn) nhưng được cấp quyền quản lý user (user module) thì user đó có quyền thay đổi được những user có quyền cao hơn mình (user nằm trong roles có quyền cao hơn) và tạo ra những roles có quyền cao hơn.
II. Kiểm tra:
1. Drupal 5.x:
Phiên bản kiểm tra: Drupal 5.16
Có hai user:
1. admin: user mặt định khi cài drupal lần đầu, user này có quyền cao nhất, không nằm trong roles nào hết.
2. test: user này tạo ra có quyền nằm trong roles test, role này có quyền như hình phía dưới.


Hình 3: Cấp quyền cho role test

Khi đăng nhập vào user test ta có màn hình sau:
Hình 5: Màn hình user test sau khi đăng nhập
User test này có thể:
2. Thay đổi bất cứ user nào (kể cả admin)
3. Thay đổi quyền của từng role



III. Giải pháp
Định nghĩa thêm thuộc tính level cho user
Đối với user quản trị có quyền quản lý thành viên (tạo, xóa, sửa, phân quyền) thì chỉ được tạo user mới có level thấp hơn và phân quyền trong giới quyền của user đó có. Chỉ cho phép user quản trị chỉ quản lý thành viên trong role mà họ được phân quyền quản lý.

Hình 9: Phân quyền user được xây dựng dựa trên role và level
Tái bút:
Trong phiên bản Drupal 6.x thì việc phân quyền cho user đối với một "path" nào đó được kiểm tra qua module menu . Nghĩa là module menu có nhiệm vụ kiểm tra user nào đó có quyền truy cập đối với một "path" nào đó không rồi tới kiểm tra quyền trên role của user đó. Có nghĩa là với một user nào đó có quyền trên role, user, và permission thì user đó vẫn nắm quyền được hệ thống, và thay đổi được user admin của hệ thống.
Xin hỏi ai có giải pháp nào khác để giải quyết vấn đề trên?
Bài viết này thực hiện bởi nhóm phát triển Drupal thuộc công ty ASALEO.
- 09/02/2010 09:10 - Module IMCE upload và chèn hình ảnh vào bài viết trong drupal
- 09/02/2010 09:04 - Album Photos Drupal modules
- 13/11/2009 15:20 - Drupal giành giải thưởng CMS danh giá nhất
- 12/10/2009 08:57 - Tổng quan về Drupal - Phần 3
- 12/10/2009 08:50 - Tổng quan về Drupal - Phần 2



















Bình luận