Chương 8: PHÂN QUYỀN TRUY CẬP TRONG DOLPHIN
8.1. Cấu hình trong cơ sở dữ liệu
- Để tạo một cấp độ thành viên mới, ta nên định nghĩa ra để dễ dàng thao tác trong các bảng dữ liệu, cụ thể như sau:
SET @iLevelNonMember := 1; SET @iLevelStandard := 2; SET @iLevelPromotion := 3; SET @iLevelCenter := 4;
- Trong Dolphin đã quy định trước 3 cấp độ thành viên, đó là:
o Khách (NonMember): có mã số là 1, là những người chưa đăng ký
thành viên trên mạng xã hội.
o Thành viên tiêu chuẩn (Standard): có mã số là 2, là những thành viên
đã đăng ký thành công trên mạng xã hội.
o Thành viên thăng tiến (Promotion): có mã số là 3, là những thành viên
- Trong trường hợp này, ta tạo thêm một cấp độ thành viên mới, đó Trung tâm
(Center).
- Để tạo một quyền cho một cấp độ thành viên, ta cần lưu ý 2 bảng sau trong cơ sở dữ liệu:
o Bảng “sys_acl_actions”:
Tên Kiểu dữ liệu Ý nghĩa
ID smallint Mã số quyền
Name varchar Tên của quyền
AddtionalParamName varchar Các tham số kèm theo (nếu có)
Bảng - Bảng lưu trữ tên các quyền
Bảng “sys_acl_actions” lưu tất cả tên các quyền để thiết lập cho từng cấp độ thành viên.
Ví dụ, quyền có tên là “course post add”, tức cho phép thêm khóa học mới, cần thêm vào cơ sở dữ liệu như sau:
INSERT INTO `sys_acl_actions` VALUES (NULL, 'course post add', NULL);
o Bảng “sys_acl_matrix”:
Tên Kiểu dữ liệu Ý nghĩa
IDLevel smallint Mã cấp độ thành viên IDAction smallint Mã số của quyền
AllowedCount smallint Cho phép đếm số lần sử dụng quyền AllowedPeriodLen smallint Cho phép tạo khoảng thời gian có hiệu lực AllowedPeriodStart smallint Cho phép tạo thời gian bắt đầu
Chương 7: Phân quyền truy cập trong Dolphin
Ví dụ, với quyền “course post add” , tức thêm khóa học mới, quyền này chỉ cho phép “Center” sử dụng thì câu truy vấn tiếp theo sẽ như sau:
SET @iAction = (SELECT LAST_INSERT_ID());
INSERT INTO `sys_acl_matrix` (`IDLevel`, `IDAction`) VALUES (@iLevelCenter, @iAction);
- Vì vậy, câu truy vấn hoàn chỉnh cho quyền “course post add” sẽ như sau:
INSERT INTO `sys_acl_actions` VALUES (NULL, 'course post add', NULL);
SET @iAction = (SELECT LAST_INSERT_ID());
INSERT INTO `sys_acl_matrix` (`IDLevel`, `IDAction`) VALUES (@iLevelCenter, @iAction);
- Giả sử như có thêm 1 quyền nữa là “course post search” tức là tìm kiếm khóa học, quyền này cho phép tất cả các cấp độ thành viên đều có thể sử dụng, kể cả cấp độ thành viên Center, thì câu truy vấn sẽ như sau:
INSERT INTO `sys_acl_actions` VALUES (NULL, 'course post search', NULL);
SET @iAction = (SELECT LAST_INSERT_ID());
INSERT INTO `sys_acl_matrix` (`IDLevel`, `IDAction`) VALUES(@iLevelNonMember, @iAction), (@iLevelStandard, @iAction), (@iLevelPromotion, @iAction), (@iLevelCenter, @iAction);