Skip to content

Phân quyền RBAC & Gói module

Kiểm soát ai được làm gì trong workspace, và bật/tắt module theo gói dịch vụ đã đăng ký. Route: /settings/team/settings/modules.

Vai trò (Roles)

5 vai trò mặc định trong workspace — mỗi thành viên được gán một vai. Vai quyết định những gì họ thấy và làm được trong toàn hệ thống.

VaiMô tả ngắnPhù hợp cho
OWNERToàn quyền — cấu hình, thanh toán, xóa workspaceChủ doanh nghiệp
ADMINQuản trị hệ thống, mời thành viên, unlock dữ liệuTrưởng phòng IT / vận hành
OPSThao tác logistics: booking, container, trip, checklistNhân viên vận hành, dispatcher
SALESCRM lead, báo giá — chỉ thấy data của mìnhNhân viên kinh doanh
ACCOUNTANTXem toàn bộ tài chính, approve thanh toánKế toán

Một thành viên — một vai

Mỗi người chỉ có một vai tại một thời điểm. OWNER có thể thay đổi vai của bất kỳ thành viên nào ngoài chính mình.

Danh sách vai trò
Trang /settings/team — danh sách thành viên, vai trò, trạng thái hoạt động

Ma trận quyền

Tóm tắt quyền theo từng module — ✅ đầy đủ, 👁 chỉ xem, ❌ không truy cập.

ModuleOWNER/ADMINOPSSALESACCOUNTANT
Booking / Container / Trip👁
Manifest & Load Plan
CRM Lead & Quote👁✅ (của mình)👁
Rate Card👁👁
Debit Note / Invoice✅ (tạo)
Công nợ AR/AP
Fleet & Fuel👁
Settings & RBAC✅ (giới hạn)

SALES chỉ thấy data của mình

SALES chỉ thấy CrmLead và Quote có ownerId = user.id. Muốn Sales thấy toàn bộ pipeline, cần nâng vai lên OPS hoặc ADMIN.

Gói module

Mỗi gói dịch vụ bao gồm một tập module. OWNER bật/tắt module trong /settings/modules — menu và tính năng tương ứng tự ẩn/hiện ngay lập tức.

ModuleStarterProEnterprise
Tờ khai hải quan + AI
Logistics (Shipment/Booking/Container)
Fleet & Fuel
CRM + Rate Card + Quotes
Load Plan 3D
Tích hợp VietMap / ePort✅ (add-on)
Công nợ đa đối tác & P&L
SLA Engine + Scorecard
Multi-workspace

Tắt module không xóa dữ liệu

Khi tắt một module (ví dụ Fleet), dữ liệu xe/tài xế vẫn được giữ nguyên. Bật lại thì hiển thị đầy đủ trở lại. Chỉ OWNER mới có quyền bật/tắt module.

Quản lý module
Trang /settings/modules — bật tắt từng module, xem gói hiện tại

Thêm thành viên

Quy trình mời và quản lý thành viên:

  1. Mời thành viên mới — Vào /settings/team → nút + Mời thành viên. Nhập email và chọn vai (Role). Hệ thống gửi email mời có link kích hoạt.

  2. Thành viên chấp nhận lời mời — Người được mời click link trong email → đăng nhập (hoặc đăng ký) → tự động join workspace với vai đã được gán.

  3. Thay đổi vai — Trong danh sách thành viên → click tên → chọn vai mới từ dropdown. Thay đổi có hiệu lực ngay — phiên đăng nhập hiện tại của họ được cập nhật.

  4. Vô hiệu hóa tài khoản — Click Vô hiệu hóa để ngừng truy cập ngay lập tức mà không xóa dữ liệu họ đã tạo. Có thể kích hoạt lại bất kỳ lúc nào.

Giới hạn số thành viên theo gói

Starter: tối đa 3 thành viên. Pro: tối đa 15. Enterprise: không giới hạn. Xem và nâng gói tại /settings/billing.

Chi tiết quyền từng role

Toàn quyền không giới hạn:

  • Tất cả module: đọc, tạo, sửa, xóa
  • Quản lý subscription, thanh toán, nâng cấp gói
  • Xóa workspace (hành động không thể hoàn tác)
  • Thêm/xóa/đổi vai thành viên bất kỳ
  • Bật/tắt module
  • Xem audit log đầy đủ
  • Override SLA, trạng thái, phê duyệt đặc biệt

Workspace isolation — cross-workspace IDOR

Mọi query trong hệ thống đều bắt buộc filter theo workspaceId — một custom ESLint rule (require-workspace-filter) kiểm tra tại compile time. Điều này ngăn chặn:

  • Người dùng workspace A xem dữ liệu workspace B
  • API endpoint bị exploit để lấy data cross-tenant
  • Query quên filter workspace trong code mới

ESLint enforced at build time

Nếu developer viết query không có workspaceId filter → build fail ngay. Đây là tuyến phòng thủ đầu tiên chống cross-workspace data leak.

Admin roles (internal — không phải workspace roles)

Ngoài 5 workspace roles ở trên, hệ thống có AdminRole riêng cho admin nội bộ TKHQ:

AdminRoleQuyền
SUPER_ADMINToàn quyền hệ thống
SUPPORTXem workspace của bất kỳ user
FINANCEXem billing, subscription, reconciliation
SALESXem CRM internal, không touch workspace user
COMPLIANCEXem audit log toàn hệ thống

AdminRole chỉ áp dụng cho nhân viên TKHQ tại trang /admin — không liên quan đến workspace roles của người dùng.