Vai trò và phân quyền
SmartCK Hub ERP sử dụng mô hình RBAC (Role-Based Access Control) kết hợp ABAC (Attribute-Based Access Control) để kiểm soát quyền truy cập linh hoạt theo vai trò và phạm vi phòng ban.
Tổng quan hệ thống phân quyền
Người dùng → Vai trò → Quyền hạn (Permissions)
↓
Phạm vi phòng ban (Department Scope)
| Thành phần | Mô tả |
|---|---|
| Vai trò (Role) | Nhóm quyền hạn gán cho người dùng (VD: Admin, Manager, Staff) |
| Quyền hạn (Permission) | Cặp resource + action xác định quyền cụ thể |
| Phạm vi (Scope) | Giới hạn quyền theo phòng ban hoặc toàn hệ thống |
Cấu trúc quyền phân cấp L1/L2/L3
Quyền hạn được tổ chức theo 3 cấp:
| Cấp | Ý nghĩa | Ví dụ |
|---|---|---|
| L1 — Module | Nhóm chức năng lớn | admin, hrm, crm |
| L2 — Resource | Tài nguyên cụ thể trong module | users, roles, settings |
| L3 — Action | Hành động trên tài nguyên | create, read, update, delete |
Ví dụ quyền đầy đủ: admin.users.create — Tạo người dùng trong module Admin.
Khi c ấp quyền ở cấp L1 (module), người dùng tự động có quyền trên toàn bộ resource và action bên trong module đó.
Tạo vai trò mới
- Truy cập Admin → Vai trò.
- Nhấn Tạo vai trò.
- Điền thông tin:
- Tên vai trò: tên hiển thị (VD: "Quản lý nhân sự").
- Mã vai trò: mã duy nhất (VD:
hr_manager). - Mô tả: ghi chú về vai trò.
- Nhấn Lưu rồi chuyển sang bước phân quyền.
Ma trận phân quyền (Permission Matrix)
Sau khi tạo vai trò, sử dụng Ma trận phân quyền để chọn quyền hạn.
- Mở chi tiết vai trò, chuyển sang tab Phân quyền.
- Ma trận hiển thị dạng bảng: hàng là resource (L2), cột là action (L3).
- Đánh dấu ô tương ứng để cấp quyền.
- Nhấn Lưu để áp dụng.
| Create | Read | Update | Delete | |
|---|---|---|---|---|
| Users | ✅ | ✅ | ✅ | ❌ |
| Roles | ❌ | ✅ | ❌ | ❌ |
| Settings | ❌ | ✅ | ✅ | ❌ |
Sử dụng checkbox Chọn tất cả trên tiêu đề cột để cấp nhanh một action cho toàn bộ resource trong module.
Tạo / sửa quyền hạn
- Truy cập Admin → Quyền hạn.
- Nhấn Tạo quyền hoặc nhấn biểu tượng sửa trên quyền hiện có.
- Điền thông tin:
- Resource: tên tài nguyên (VD:
contracts). - Action: hành động (
create,read,update,delete). - Module cha (L1): module chứa quyền này.
- Mô tả: ghi chú về quyền hạn.
- Resource: tên tài nguyên (VD:
- Nhấn Lưu.
Không nên xóa quyền hạn đang được sử dụng bởi vai trò. Hãy kiểm tra danh sách vai trò liên quan trước khi xóa.
Phân quyền theo phạm vi phòng ban
SmartCK Hub hỗ trợ giới hạn quyền theo phòng ban (department-scoped):
- Toàn hệ thống: người dùng có quyền trên dữ liệu của tất cả phòng ban.
- Phòng ban trực thuộc: chỉ có quyền trên dữ liệu phòng ban mà người dùng thuộc về.
Cấu hình tại mục Phạm vi khi gán vai trò cho người dùng.
Gán quyền trực tiếp cho người dùng
Ngoài quyền từ vai trò, quản trị viên có thể gán quyền bổ sung trực tiếp cho từng người dùng:
- Mở chi tiết người dùng, chuyển sang tab Quyền riêng.
- Thêm quyền từ danh sách quyền hạn có sẵn.
- Nhấn Lưu.
Quyền trực tiếp có độ ưu tiên cao hơn quyền từ vai trò. Hãy sử dụng tính năng này một cách thận trọng để tránh xung đột quyền hạn.
Cache quyền hạn trên Redis
Hệ thống tự động lưu cache quyền hạn trên Redis để tối ưu hiệu năng:
- Cache được tạo khi người dùng đăng nhập lần đầu.
- Cache tự động cập nhật khi vai trò hoặc quyền thay đổi.
- TTL (Time-To-Live) mặc định: 15 phút, có thể điều chỉnh trong cài đặt hệ thống.
Nếu quyền hạn không cập nhật đúng, quản trị viên có thể xóa cache bằng cách vào Admin → Cài đặt → Xóa cache Redis.