Skip to content

URD: Quyền hạn

ModuleCORE-02Phiên bảnv0.4
Trạng tháiBuiltNgày2026-05-29

1. Mục đích

Định nghĩa cách kiểm soát truy cập tới tính năng và dữ liệu. Quyền hạn cho phép quản trị viên gán vai trò cho người dùng, cấp quyền cho các vai trò đó, giới hạn vai trò theo một tổ chức hoặc merchant cụ thể, và để mọi truy vấn được tự động lọc về những gì người dùng yêu cầu được phép thấy — thực thi qua mô hình RBAC dựa trên ưu tiên của Casbin với domain theo từng merchant.

2. Phạm vi

Bao gồmLoại trừ
Tám vai trò hệ thống cố định + phân cấp ưu tiênQuyền wildcard
Bỏ qua với vai trò hệ thống (Super Admin / Admin / Operator)Phân loại quyền / nhóm giao diện
Lọc dữ liệu theo vai trò tự độngQuyền theo thời gian hoặc ca làm
Tạo vai trò tùy chỉnh với ưu tiên và phạm viGhi log kiểm toán quyền
Catalog quyền (tạo / cập nhật / xóa)Mẫu vai trò / gói
Cấp / thu hồi quyền cho vai tròChuyển vai trò hoạt động theo merchant
Cấp / thu hồi vai trò cho người dùngĐặc tả API kỹ thuật (xem tài liệu developer)
Truy vấn quyền hiệu lực (trực tiếp + kế thừa)
Phân phạm vi theo tổ chức & theo merchant
Bảo vệ chống nâng quyền

3. Định nghĩa

Thuật ngữĐịnh nghĩa
RoleMột mức truy cập có tên với ưu tiên dạng số. SYSTEM (cố định) hoặc CUSTOM (do người dùng tạo).
PermissionMột hành động có tên trên một tài nguyên, định danh bằng một code duy nhất toàn cục.
Grant (policy)Một bản ghi cấp một quyền cho một vai trò hoặc trực tiếp cho một người dùng.
Membership (group)Một bản ghi liên kết người dùng với vai trò, người dùng với org/merchant, hoặc vai trò với org/merchant.
Effective permissionsHợp của mọi quyền một người dùng nắm: cấp trực tiếp + quyền kế thừa qua vai trò.
Scoped roleMột vai trò tùy chỉnh gắn với một tổ chức hoặc merchant cụ thể, giới hạn nơi nó áp dụng.
DomainMerchant mà một cấp quyền áp dụng trong đó, chọn theo từng yêu cầu bằng header active-merchant.
System-role bypassSuper Admin, Admin và Operator bỏ qua mọi lọc dữ liệu và nắm mọi quyền.
HQ-owner expansionMột Owner tại merchant trụ sở tự động vươn tới mọi merchant anh em của tổ chức đó.
Privilege escalationQuản lý một vai trò ở mức hoặc cao hơn ưu tiên của chính người thao tác — luôn bị chặn.

4. Mô hình Khái niệm

Chỉ mang tính khái niệm — mô hình dữ liệu policy đầy đủ nằm trong tài liệu RBAC developer.

5. Yêu cầu Chức năng

Mỗi vùng chức năng một bảng. Mã <AREA> khớp với ID test-case. Mức ưu tiên = MoSCoW (Must / Should / Could / Won't).

5.1 Vai trò Cố định (ROLE)

IDPYêu cầu
URD-ROLE-001MCung cấp tám vai trò cố định seed khi khởi động: Super Admin, Admin, Operator, Owner, Cashier, Employee, Customer, Guest
URD-ROLE-002MVai trò cố định (SYSTEM) không thể sửa hoặc xóa
URD-ROLE-003MMỗi vai trò có một ưu tiên dạng số xác định vị trí của nó trong phân cấp
URD-ROLE-004MSuper Admin, Admin và Operator bỏ qua mọi lọc dữ liệu và nắm mọi quyền
URD-ROLE-005MOwner chỉ thấy tổ chức của mình và các merchant của nó
URD-ROLE-006MEmployee (và Cashier) chỉ thấy merchant mà họ được gán
URD-ROLE-007MMọi thao tác list và count được lọc theo phạm vi của người dùng yêu cầu
URD-ROLE-008MLọc tự động không thể bị ghi đè bởi bộ lọc do người dùng cung cấp hoặc truy cập trực tiếp theo ID
URD-ROLE-009SMột Owner tại merchant trụ sở vươn tới mọi merchant anh em của tổ chức đó

5.2 Vai trò Tùy chỉnh (CROLE)

IDPYêu cầu
URD-CROLE-001MNgười dùng được ủy quyền có thể tạo vai trò tùy chỉnh với tên i18n, ưu tiên và phạm vi tùy chọn
URD-CROLE-002MĐịnh danh vai trò được tự sinh từ ưu tiên + tên và duy nhất trong phạm vi của nó
URD-CROLE-003MƯu tiên của một vai trò mới phải thấp hơn nghiêm ngặt so với ưu tiên cao nhất của người tạo
URD-CROLE-004MVai trò tùy chỉnh có thể giới hạn theo một tổ chức hoặc merchant cụ thể
URD-CROLE-005MVai trò tùy chỉnh có thể được cập nhật (tên, mô tả, ưu tiên)
URD-CROLE-006MMột vai trò không thể bị xóa khi vẫn còn người dùng được gán vào nó
URD-CROLE-007MXóa một vai trò cascade gỡ các cấp quyền và liên kết phạm vi của nó
URD-CROLE-008SMột Owner chỉ có thể tạo vai trò giới hạn theo tổ chức hoặc merchant của riêng mình

5.3 Catalog Quyền (PERM)

IDPYêu cầu
URD-PERM-001MAdmin có thể tạo quyền với code duy nhất, action, scope và subject
URD-PERM-002MCode quyền phải duy nhất toàn cục
URD-PERM-003MTên và mô tả quyền hỗ trợ i18n
URD-PERM-004MAdmin có thể cập nhật và xóa quyền
URD-PERM-005MMột quyền có cấp quyền đang hoạt động không thể bị xóa

5.4 Cấp / Thu hồi (GRANT)

IDPYêu cầu
URD-GRANT-001MAdmin có thể cấp một hoặc nhiều quyền cho một vai trò
URD-GRANT-002MAdmin có thể thu hồi một hoặc nhiều quyền khỏi một vai trò
URD-GRANT-003MCấp một quyền đã cấp là idempotent (bỏ qua, không nhân đôi)
URD-GRANT-004MAdmin có thể cấp và thu hồi vai trò cho/khỏi người dùng
URD-GRANT-005MBảo vệ chống nâng quyền được thực thi trên mọi thao tác cấp/thu hồi
URD-GRANT-006MAdmin có thể xem mọi quyền được cấp cho một vai trò
URD-GRANT-007MAdmin có thể xem mọi người dùng được gán cho một vai trò và mọi vai trò được gán cho một người dùng

5.5 Quyền Hiệu lực & Phạm vi (EFF)

IDPYêu cầu
URD-EFF-001MTính quyền hiệu lực là hợp của cấp trực tiếp + cấp kế thừa qua vai trò (đã khử trùng)
URD-EFF-002STruy vấn hỗ trợ bộ lọc chế độ: direct, inherit, hoặc cả hai
URD-EFF-003MTruy xuất mọi tổ chức và mọi merchant một người dùng thuộc về
URD-EFF-004MMột cấp quyền chỉ phân giải trong domain merchant hoạt động được chọn theo từng yêu cầu

6. Tiêu chí Chấp nhận

AC-ROLE-01: Lọc dữ liệu theo vai trò
ChoKhiThì
Người dùng với vai trò khác nhauHọ gọi cùng một endpointSuper Admin/Admin/Operator thấy tất cả; Owner thấy org của mình; Employee/Cashier thấy merchant được gán
Bất kỳ truy vấn list/countChạy bởi một người dùng có phạm viLọc là tự động và không thể ghi đè
Một người dùng có phạm vi cung cấp bộ lọc rộng hơn hoặc ID lạYêu cầu được thực hiệnBộ lọc bị bỏ qua / từ chối truy cập
AC-ROLE-02: Bảo vệ vai trò cố định
ChoKhiThì
Bất kỳ trong tám vai trò hệ thốngNgười dùng cố sửa hoặc xóa nóThao tác bị từ chối
Ưu tiên của một vai trò cố địnhNgười dùng cố thay đổi nóBị từ chối — ưu tiên bất biến
AC-CROLE-01: Tạo vai trò tùy chỉnh
ChoKhiThì
Admin hoặc OwnerTạo một vai trò với ưu tiên + tênVai trò được tạo với type CUSTOM, định danh tự sinh
Ưu tiên ≥ ưu tiên của người tạoThử tạoBị từ chối (nâng quyền)
Có cung cấp phạm vi org/merchantVai trò được tạoLiên kết phạm vi được tạo
Cùng ưu tiên + tên trong cùng phạm viThử tạoBị từ chối (trùng định danh)
AC-GRANT-01: Cấp quyền
ChoKhiThì
ID vai trò + quyềnAdmin cấpBản ghi cấp được tạo, trả về số lượng
Quyền đã được cấpAdmin cấp lạiBỏ qua (idempotent), trả về số bỏ qua
Ưu tiên người thao tác ≤ ưu tiên vai tròAdmin cấpBị từ chối (nâng quyền)
AC-EFF-01: Quyền hiệu lực
ChoKhiThì
Người dùng có vai trò + cấp trực tiếpTruy vấn hiệu lựcHợp của trực tiếp + kế thừa, đã khử trùng
Mode = directTruy vấnChỉ trả cấp trực tiếp
Mode = inheritTruy vấnChỉ trả cấp kế thừa qua vai trò
AC-CROLE-02: Xóa vai trò
ChoKhiThì
Vai trò tùy chỉnh không có người dùngAdmin xóaVai trò + cấp quyền + liên kết phạm vi được soft-delete
Vai trò tùy chỉnh có người dùng được gánAdmin xóaBị chặn — phải gỡ gán người dùng trước
Vai trò hệ thốngAdmin xóaBị từ chối — vai trò cố định bất biến

7. Ràng buộc & Mục tiêu Loại trừ

Ràng buộc

IDRàng buộc
C-01Tám vai trò cố định được seed khi khởi động và bất biến
C-02Không ai có thể tạo hoặc quản lý vai trò ở mức hoặc cao hơn ưu tiên của chính mình
C-03Code quyền duy nhất toàn cục
C-04Thao tác cấp quyền là idempotent
C-05Mọi bản ghi được soft-delete, không bao giờ xóa vật lý
C-06Token phiên là phi trạng thái — thay đổi vai trò/quyền có hiệu lực ở lần đăng nhập kế tiếp
C-07Mọi thao tác yêu cầu xác thực
C-08Một cấp quyền phân giải trong một domain merchant hoạt động cho mỗi yêu cầu

Mục tiêu Loại trừ

  • Quyền wildcard (vd sales.*)
  • Phân loại quyền và nhóm giao diện
  • Quyền theo thời gian hoặc ca làm
  • Nhật ký kiểm toán quyền
  • Mẫu vai trò / gói cấu hình sẵn
  • Chuyển vai trò hoạt động theo merchant

8. Lịch sử Phiên bản

NgàyTác giảMô tảVer
2026-02-26P. Do - Product OwnerUser story ban đầuv0.1
2026-04-16ProductTái cấu trúc sang định dạng URDv0.3
2026-05-29ProductChuyển sang quy ước module-docs; hòa hợp với RBAC Casbin theo merchant (8 vai trò, ưu tiên, domain); đặt lại khóa vùng (ROLE/CROLE/PERM/GRANT/EFF)v0.4

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