Skip to content

PRD: Phân cấp tài nguyên, hành động & khai báo quyền

ModulePhân quyềnPRD IDPRD-HIER-001
Trạng tháiSẵn sàng devFEATHIER
EpicPlaneBANA-1572
Ngày2026-06-04Phiên bảnv1.0
Gói@nx/identityURDHIER
SurfaceBackend
Phụ tráchPhát Nguyễn

Phân cấp tài nguyên, hành động & khai báo quyền là gì

Engine RBAC theo phạm vi merchant hỗ trợ ba trục kế thừa mà BANA chưa khai thác hết: trục hành động (quản lý bao đọc), trục tài nguyên (thao tác hoàn tiền của một đơn hàng nằm dưới đơn hàng; dòng sản phẩm của một đơn hàng nằm dưới đơn hàng), và trục phạm vi (organizer bao merchant).

Trước đợt này, quyền ở dạng phẳng: gần 950 mã quyền theo từng thao tác riêng lẻ, mỗi mã cấp một dòng. Một vai trò owner mang gần 950 dòng cấp quyền; việc "trụ sở thấy được mọi merchant" được giả bằng cách ghi một hàng thành viên cho từng merchant. Không có hành động rộng kiểu quản lý/ghi, và không có cách khai báo thuận tiện - mỗi module tự viết tay phần khai báo quyền của mình. Hệ quả: vai trò cồng kềnh, dễ vỡ khi thêm thao tác mới, tải chậm và khó đọc lại để suy luận ai được làm gì.

Ba trục xếp lồng nhau

Đợt này mô hình hoá quyền thành cây tài nguyên nhân bậc thang hành động nhân cây phạm vi, để một vai trò gộp lại còn vài dòng cấp thô trong khi vai trò cần chi tiết vẫn cấp chính xác từng thao tác, và biến việc khai báo quyền của một controller mới thành một lệnh gọi.

Khi admin gán quyền cho vai trò owner tại màn tạo/sửa vai trò, giờ chỉ cần chọn một dòng cấp quản lý cho cả module Sale, thay vì tick từng thao tác lẻ - mọi đối tượng và thao tác bên dưới Sale tự động được bao phủ. Cấp quyền ở cấp module hoặc cấp đối tượng thì mọi màn hình, thao tác con bên trong đều dùng được ngay, không phải cấp riêng từng thao tác một. Một vai trò trụ sở/quản lý vươn tới mọi merchant của organizer mình qua một dòng cấp quyền duy nhất ở phạm vi organizer, không cần thêm dòng thành viên cho từng merchant.

Kỹ sư khai báo quyền của một controller mới - gồm tài nguyên, các thao tác và hành động cơ bản của nó - chỉ bằng một lệnh gọi trong code, không phải viết tay từng dòng quyền. Khi migration chạy lúc khởi động backend, các quyền và cạnh phân cấp được đồng bộ tự động và không đổi khi chạy lại nhiều lần; quyền nào bị gỡ khỏi khai báo trong code sẽ tự động dọn theo cùng các dòng cấp quyền của nó, không tồn đọng rác.

Chỗ dễ sai nhất

Quản lý Sale không phải một mẫu ký tự đại diện

Độ thô của một dòng cấp quyền đến từ cây tài nguyên cộng với hành động quản lý, không phải từ một mẫu ký tự đại diện (wildcard) kiểu "mọi thứ thuộc sale". Không có quyền dạng mẫu đại diện tuỳ ý trong hệ thống - mọi độ rộng đều đi qua phân cấp có khai báo tường minh.

Tương tự, tầm với của một vai trò trụ sở qua trục phạm vi (organizer bao merchant) là một cạnh riêng, còn đang xây dựng - hiện tại vai trò trụ sở vẫn cần thêm dòng thành viên cho từng merchant, chưa vươn được chỉ bằng một dòng cấp quyền theo organizer.

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