📐 Mô Hình Tactical Phân Quyền (RBAC Class Diagram)
Sơ đồ quan hệ phân cấp của User, Vai trò (Role) và Quyền truy xuất (RolePermission) dựa trên kiến trúc RBAC.
🛡️ Luật Nghiệp Vụ Toàn Vẹn (Invariants)
Các luật nghiệp vụ bảo mật và phân quyền hệ thống bắt buộc phải duy trì trong mọi trạng thái giao dịch.
- Liên kết 1-to-1 duy nhất: Một tài khoản đăng nhập `User` chỉ được liên kết tối đa tới duy nhất 1 bản ghi `Employee`. Không cho phép 2 tài khoản khác nhau trỏ tới cùng một nhân viên.
- Mã hóa mật khẩu: Mật khẩu của `User` lưu trữ trong database bắt buộc phải được băm/mã hóa bằng các thuật toán bảo mật mạnh (như `bcrypt`), tuyệt đối không lưu trữ plaintext.
- Cơ chế hoạt động của tài khoản: Chỉ những User có trạng thái hoạt động (`status = 1`) mới có thể đăng nhập thành công và được hệ thống cấp phát token (`UserToken`).
- Cơ chế SuperAdmin: Nếu thuộc tính `isSuperAdmin = true` được kích hoạt trên User, tài khoản này sẽ được bỏ qua mọi bước kiểm tra phân quyền động trong hệ thống và tự động có toàn quyền xử lý tất cả các tài nguyên.
- Hợp quyền phân vai trò: Một người dùng có thể được gán đồng thời nhiều vai trò (`UserRole`). Khi thực thi kiểm tra quyền truy xuất, hệ thống sẽ thực hiện **hợp (union)** các quyền hạn (`PermissionCode`) từ tất cả các Roles đang hoạt động của người dùng đó để tạo ra tập hợp quyền hợp lệ cuối cùng.