Skip to content

Phân quyền (RBAC) Phase 1 Built

Sau khi xác thực danh tính, module này quyết định người dùng được phép làm gì - truy cập module nào, thực hiện hành động nào. Áp dụng mô hình RBAC với 4 vai trò mặc định (Owner · Manager · Cashier · Viewer), một ma trận quyền per module, và phân quyền theo chi nhánh để bảo mật dữ liệu đa cơ sở của chuỗi sân.

1. Định danh

Thuộc tínhGiá trị
Module IDF-03
HạngCore
Trạng tháiBuilt (P1) · In-progress (vai trò tuỳ chỉnh)
Giai đoạnP1 (4 vai trò, ma trận quyền, branch scope) · P2 (custom role)
Ưu tiênHIGH
Người dùng chínhChủ sân · Quản lý ca · Thu ngân · Xem báo cáo

2. Mục đích & Phạm vi

Bao gồmLoại trừ
4 vai trò mặc định: Owner · Manager · Cashier · ViewerXác thực danh tính & cấp JWT (do Người dùng & Xác thực sở hữu)
Ma trận quyền per module (✅ toàn quyền · 👁 chỉ xem · ➕ tạo · ✏️ sửa · ❌ chặn)Giao diện tạo/sửa nhân viên (nằm trong quản lý nhân sự)
Phân quyền theo chi nhánh (branch scope trong JWT)Ghi log thay đổi quyền (do Audit Log lưu)
Gán / thay đổi vai trò; áp dụng ngay qua WebSocketĐịnh nghĩa nội dung từng module nghiệp vụ
Middleware kiểm tra quyền 2 lớp (UI + API 403)
Vai trò tuỳ chỉnh (P2) với trần quyền ≤ Manager

3. Năng lực

Năng lựcNgười dùng làm được gì
4 vai trò mặc địnhOwner toàn quyền · Manager vận hành ca · Cashier POS + lịch (đọc) · Viewer chỉ đọc báo cáo/hoá đơn
Ma trận quyềnOwner xem bảng tổng hợp quyền của tất cả vai trò × module
Gán vai tròOwner chọn vai trò khi tạo nhân viên; thay đổi role bất kỳ lúc nào
Áp dụng tức thìThay đổi role có hiệu lực ngay qua WebSocket - nhân viên đang online bị refresh session
Branch scopeJWT mang branch_id; Manager chỉ thấy dữ liệu chi nhánh được gán, Owner thấy tất cả
Báo cáo scopedModule báo cáo chỉ hiển thị dữ liệu của chi nhánh trong token
Defense in depthChặn ở cả 2 lớp: UI ẩn menu + API trả 403; không chỉ dựa vào UI
Vai trò tuỳ chỉnh (P2)Owner định nghĩa vai trò mới với bộ quyền riêng, trần quyền không vượt Manager

4. Phụ thuộc Module

Phụ thuộc vàoVì sao
Người dùng & Xác thựcJWT chứa role + branch_id được RBAC dùng để kiểm tra; giao diện gán role nằm trong quản lý nhân sự
Nền tảngGhi mọi thay đổi role / thu hồi quyền vào audit log; thông báo gửi theo branch scope
Mọi module nghiệp vụMọi API nghiệp vụ gọi middleware RBAC để kiểm tra quyền trước khi xử lý
RedisCache permission matrix tránh tra DB mỗi request; lưu user blacklist

5. Backend Packages

Chi tiết triển khai nằm trong tài liệu lập trình viên - mục này chỉ ánh xạ module tới các service vận hành nó.

PackageVai tròTài liệu lập trình viên
@nx/rbacĐịnh nghĩa vai trò, ma trận quyền, branch scope, middleware kiểm tra 403, áp dụng role qua WebSocketrbac

6. Luồng người dùng chính

Kiểm tra quyền truy cập

Gán & thu hồi vai trò

7. Vai trò & Phân quyền

Vai tròĐược phépKhông được phép
Owner (Chủ sân)Toàn quyền mọi module + mọi chi nhánh; xem ma trận quyền; gán/đổi vai tròXoá hoặc downgrade Owner duy nhất; tự sửa role của chính mình
Manager (Quản lý ca)POS, lịch sân, kho, sự kiện, khách hàng, báo cáo trong chi nhánh được gánCài đặt hệ thống, phân quyền RBAC, onboarding
Cashier (Thu ngân)POS (bán hàng) + lịch sân (chỉ đọc) + tạo nhanh khách hàngBáo cáo, kho, sửa/xoá hồ sơ khách, mọi module quản trị
Viewer (Xem báo cáo)Chỉ đọc báo cáo + hoá đơn trong chi nhánh được gánTạo/sửa booking, đơn hàng hay bất kỳ dữ liệu vận hành

8. Trạng thái & Lộ trình

Giai đoạnNăng lực
P14 vai trò mặc định, ma trận quyền per module, branch scope trong JWT, gán/đổi role, áp dụng tức thì qua WebSocket, middleware 403
P2Vai trò tuỳ chỉnh, override quyền per nhân viên, gán Manager nhiều chi nhánh, audit trail phân quyền theo timeline
P3Uỷ quyền tạm thời (Permission Delegation), kiểm soát theo thuộc tính dữ liệu (ABAC - ví dụ chỉ xem booking của ca mình)

9. Trang liên quan

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.