PRD: Policy definition, danh mục permission & grant
| Module | Phân quyền | PRD ID | PRD-PERM-001 |
| Trạng thái | Sẵn sàng dev | FEAT | PERM · BANA-1435 |
| Epic | — | Plane | BANA-1549 |
| Ngày | 2026-05-28 | Phiên bản | v1.0 |
| Gói | @nx/identity | URD | PERM |
| Surface | BO · Vận hànhClient · Chủ/QL | ||
| Phụ trách | Phát Nguyễn | ||
Policy definition, danh mục permission & grant là gì
Đội vận hành (ở Back Office) và merchant owner (ở team module) có một bề mặt quản lý cho mô hình authorization của BANA: bảo trì permission catalog và quản lý policy definition. Mô hình authorization của BANA - RBAC theo priority với phân quyền theo từng merchant (đã bật) - đã lưu permission catalog và các policy grant, và phần grant/revoke/effective-permission bên dưới cũng đã tồn tại từ trước. Thứ còn thiếu là một bề mặt dùng được để điều khiển chúng: đội vận hành không thể duyệt permission catalog, gắn hoặc gỡ permission, hay kiểm tra một policy áp dụng cho những role, user và merchant nào nếu không động trực tiếp vào dữ liệu.
Cấu trúc theo target
PRD này dựng bề mặt quản lý đó trên nền phần authorization hiện có: màn danh mục permission (danh sách / tạo / sửa) và màn policy definition được tổ chức thành các section theo target - mỗi section là một bố cục hai panel (danh sách đối tượng bên trái, các tab grant của đối tượng đang chọn bên phải) kèm dialog grant. Cùng bề mặt đó được nhân bản vào team module hướng đến merchant để owner quản lý policy trong phạm vi merchant của chính mình, được hỗ trợ bởi một đợt gắn nhãn song ngữ Anh/Việt.
Permission catalog quản lý qua ba màn: danh sách, tạo, sửa - mỗi permission có code duy nhất toàn hệ thống kèm subject, action, scope. Policy definition chia theo section target: chọn một user, một role, hoặc một merchant rồi grant/revoke permission qua bảng và dialog theo tab. Gán vai trò cho một người thao tác được từ ba lối vào - thẻ Phân quyền trong form Nhân viên tại trang Client, tab theo-người và tab theo-vai-trò trong policy definition - cả ba cùng ghi vào một tập grant.
Chỗ dễ sai nhất
Idempotent nghĩa là bỏ qua và đếm, không phải báo lỗi
Grant lặp lại một mục đã được cấp sẽ bị bỏ qua và được đếm, không bao giờ tạo bản ghi trùng - và cũng không báo lỗi. Gán role cho user có thể kèm domain tùy chọn để giới hạn phạm vi hiệu lực - bỏ trống thì hiệu lực toàn cục.
Owner tự quản lý policy trong phạm vi merchant của mình qua bản clone của bề mặt này trong team module - cùng logic theo target, không phải một bản fork riêng.
1. Mục tiêu & Loại trừ
Mục tiêu
- Bảo trì permission catalog qua màn danh sách / tạo / sửa - code duy nhất toàn hệ thống, subject, action, scope, name/description song ngữ.
- Quản lý policy definition theo từng target: section theo user, role và merchant đang hoạt động.
- Grant/revoke idempotent: grant lặp lại một mục đã có sẽ bị bỏ qua và được đếm, không tạo bản ghi trùng.
- Ngữ nghĩa phạm vi tường minh: gán role cho user có thể kèm domain tùy chọn - bỏ trống thì hiệu lực toàn cục, điền thì chỉ hiệu lực trong domain đó; quyền thao tác grant/revoke được enforce bằng kiểm tra quyền sở hữu theo từng target; merchant đang hoạt động giới hạn các lookup policy.
- Nhân bản bề mặt policy-definition vào team module để owner - và đội vận hành khi thao tác trong phạm vi một merchant cụ thể - quản lý policy trong phạm vi merchant đó.
- Ship các nhãn Anh/Việt mà các màn hình phụ thuộc vào.
Loại trừ
- Phân cấp resource/action/domain và bộ công cụ declaration - các grant thô manage/write và roll-up theo module là một increment riêng (PRD-HIER-001).
- Permission dạng wildcard/glob, phân nhóm permission category / gom nhóm UI, role template / bundle (xem Loại trừ trong URD).
- Permission theo thời gian hoặc theo ca, và ghi log audit permission.
- Bản thân engine authorization - increment này là bề mặt quản lý, không phải engine enforcement hay phần grant/revoke mà nó tiêu thụ.
2. Thước đo thành công
| Thước đo | Mục tiêu / tín hiệu |
|---|---|
| Tự phục vụ quản lý | Permission catalog và grant được quản lý ngay trong sản phẩm; không sửa dữ liệu trực tiếp để grant/revoke |
| Toàn vẹn catalog | Mỗi permission có code duy nhất toàn hệ thống; permission đang có grant hiệu lực không thể xóa |
| Grant không trùng lặp | Grant lại một mục đã được cấp là no-op: mục đó bị bỏ qua và được đếm, số bản ghi không đổi |
| Phạm vi grant | Grant/revoke chỉ thực hiện được khi người thao tác có quyền sở hữu trên target tương ứng; lookup policy bị giới hạn theo merchant đang hoạt động |
| Tầm với của owner | Merchant owner quản lý được policy trong phạm vi merchant của mình qua team module |
3. Persona & Tình huống
| Persona | Mục tiêu trong tính năng này |
|---|---|
| Đội vận hành - back office | Bảo trì permission catalog, quản lý role, và grant/revoke permission trên user, role, merchant |
| Owner - team module | Quản lý policy trong phạm vi merchant của mình |
Core scenario: bảo trì permission catalog → mở policy definition → chọn tab target (user / role / merchant) → chọn một đối tượng ở panel trái → xem các tab grant của đối tượng → grant hoặc revoke qua dialog → mục đã có bị bỏ qua và được đếm, mục mới được tạo.
4. User Stories
| # | Là một | Tôi muốn | Để |
|---|---|---|---|
| 01 | đội vận hành | tạo, sửa và liệt kê permission với code duy nhất, subject, action và scope | catalog được bảo trì ngay trong sản phẩm |
| 02 | đội vận hành | chọn một user rồi xem và quản lý role, permission, merchant và organizer đã gán cho user đó | policy của một người nằm gọn một chỗ |
| 03 | đội vận hành | chọn một role rồi grant/revoke permission và xem những user đang giữ role đó | kiểm soát role được làm gì và ai đang dùng nó |
| 04 | đội vận hành | khi gán role cho user phải chọn merchant trước, và có thể điền domain để giới hạn phạm vi hiệu lực của role đó | việc gán không tràn ra ngoài phạm vi dự kiến |
| 05 | đội vận hành | gán vai trò cho một người từ bất kỳ lối nào thuận tiện - form Nhân viên, tab theo-người, hay tab theo-vai-trò - và biết chắc cả ba cùng ghi vào một chỗ | không phải nhớ quy tắc riêng cho từng nơi |
| 06 | đội vận hành | việc grant lại một mục đã có bị bỏ qua và được đếm thay vì tạo bản ghi trùng | thao tác grant lặp lại không làm hỏng dữ liệu |
| 07 | owner | bề mặt policy-definition tương tự nằm trong team module | quản lý policy trong phạm vi merchant của mình |
5. Yêu cầu chức năng
| # | Yêu cầu | Trạng thái | URD ref |
|---|---|---|---|
FR-001 | Màn danh sách permission - bảng có lọc theo từng cột | ✅ | URD-PERM-001..004 |
FR-002 | Form tạo/sửa permission đi kèm rule toàn vẹn catalog. • Form tạo/sửa permission. • Rule toàn vẹn catalog. | ✅ | URD-PERM-002 · URD-PERM-005 |
FR-003 | Quản lý role kèm cây permission gán trực tiếp | ✅ | URD-ROLE · URD-CROLE |
FR-004 | Màn policy definition - bố cục section theo target | ✅ | URD-GRANT-001..002 |
FR-005 | Section theo user gồm 4 tab và một bộ chuyển chế độ xem permission. • 4 tab. • Bộ chuyển chế độ xem permission. | ✅ | URD-GRANT-004 · URD-GRANT-006..007 |
FR-006 | Section theo role - 2 tab | ✅ | URD-GRANT-001..002 |
FR-007 | Section theo merchant gồm grant/revoke Users và Roles theo phạm vi merchant. • Grant/revoke Users. • Roles theo phạm vi merchant. | 🔶 | URD-GRANT-001..002 |
FR-008 | Dialog grant theo từng target, cùng luồng gán role cho user qua ba lối vào. • Dialog grant riêng cho từng target. • Luồng gán role cho user: chọn merchant trước, sau đó điền domain tùy chọn. • Thao tác thực hiện được từ ba lối vào. | ✅ | URD-GRANT-001..002 |
FR-009 | Grant/revoke idempotent, trả về số đếm | ✅ | URD-GRANT-003 |
FR-010 | Phạm vi & quyền thao tác được kiểm soát theo nhiều lớp. • Giới hạn theo từng merchant (per-merchant). • Kiểm tra quyền sở hữu. • Server là nguồn chặn duy nhất. | ✅ | URD-GRANT-005 · URD-EFF-004 |
FR-011 | Màn tra cứu bản ghi policy thô | 🚧 | URD-GRANT-006 |
FR-012 | Bản clone trong team module | ✅ | URD-GRANT-001..007 · URD-EFF-004 |
FR-013 | Nhãn Anh/Việt cho toàn bộ màn hình | ✅ | URD-PERM-003 |
FR-001 - Màn danh sách permission. Bảng gồm các cột: Mã (hiển thị dạng mã kỹ thuật), Tên (theo ngôn ngữ đang chọn), Subject, Action (hiển thị dạng badge), Scope - cả 5 cột đều lọc được. Mỗi dòng có hai action: Sửa và Xóa (xóa yêu cầu xác nhận, thông điệp xác nhận hiển thị mã permission).
FR-002 - Form tạo/sửa permission. Các field:
| Field | Bắt buộc | Ghi chú |
|---|---|---|
| Mã (code) | ✔ | Duy nhất toàn hệ thống; khóa không cho sửa khi edit |
| Tên | ✔ | Song ngữ Anh/Việt |
| Subject | ✔ | Chọn 1 trong 2 giá trị: User, Role |
| Action | ✔ | Chọn 1 trong 5 giá trị: create, read, update, delete, execute |
| Scope | ✔ | Chọn 1 trong 3 giá trị: SYSTEM, ORGANIZER, MERCHANT |
| Mô tả | ✘ | Song ngữ Anh/Việt |
Rule toàn vẹn: permission đang có grant hiệu lực không thể xóa (hệ thống từ chối và báo lỗi); bản ghi được soft-delete, không bao giờ xóa vật lý.
FR-003 - Quản lý role kèm cây permission. Màn role có bảng danh sách (cột: Tên, Mô tả, Trạng thái, Loại - role hệ thống mang badge phân biệt với role tùy chỉnh; tất cả lọc được; header có bộ lọc theo merchant) và form tạo/sửa với các field: tên + mô tả song ngữ; trạng thái (3 giá trị: Đang hoạt động / Ngưng hoạt động / Lưu trữ, mặc định Đang hoạt động); priority (mặc định mức thấp); organizer (bắt buộc trên back office); merchant (tùy chọn); và cây permission để tick chọn các permission gán trực tiếp cho role ngay khi tạo/sửa. Như vậy tồn tại hai cơ chế gán permission cho role song song: (1) cây permission trong form role - dùng khi định nghĩa role trọn gói; (2) dialog grant trong section theo role của policy definition (FR-006) - dùng khi điều chỉnh grant lẻ trên role đã có. Cả hai ghi vào cùng một tập grant.
FR-004 - Bố cục màn policy definition. Màn gồm các tab target cấp một: Theo user, Theo role, và Theo merchant (đang hoạt động). Mỗi tab là một section hai panel: panel trái liệt kê đối tượng (tìm kiếm được, phân trang 20 dòng/trang, có trạng thái rỗng hướng dẫn khi chưa chọn đối tượng); panel phải hiển thị các tab grant của đối tượng đang chọn.
FR-005 - Section theo user. Chọn một user (tìm theo tên/email/username) rồi thao tác trên 4 tab: Roles, Permissions, Merchants, Organizers - mỗi tab một bảng grant hiện có + action revoke + dialog grant riêng (tab Organizers liệt kê các organizer mà user thuộc về, không phải màn quản lý target theo organizer). Tab Permissions có thêm bộ chuyển chế độ xem 3 giá trị: Tất cả / Trực tiếp / Kế thừa - phân biệt permission được gán thẳng cho user với permission thừa hưởng qua role.
FR-006 - Section theo role. Chọn một role (tìm theo tên/định danh, role hệ thống mang badge riêng) rồi thao tác trên 2 tab: Permissions (grant/revoke permission cho role) và Users (những user đang giữ role - trả lời câu hỏi "role này áp dụng cho ai").
FR-007 - Section theo merchant. Chọn một merchant (tìm theo tên/định danh, merchant trụ sở mang badge riêng) rồi xem và grant/revoke Users thuộc merchant đó. Phần Roles thuộc phạm vi merchant hiện có ở khu vực Đội ngũ (xem và thu hồi - FR-012); màn policy definition dùng chung của Back Office chưa có tab này.
FR-008 - Dialog grant & luồng gán. Các tab grant trong section theo user và theo role có dialog riêng: bảng chọn nhiều dòng (có lọc/tìm kiếm, phân trang 25 dòng/trang), nút xác nhận hiển thị số mục đang chọn và bị vô hiệu khi chưa chọn mục nào; section theo merchant ở màn Back Office dùng chung cũng có dialog gán user vào merchant. Phần theo merchant ở khu vực Đội ngũ chỉ xem và thu hồi - cấp mới thực hiện từ tab theo-người hoặc theo-vai-trò. Riêng luồng gán role cho user: phải chọn merchant trước - danh sách merchant chỉ gồm các merchant mà user đó đã thuộc về - rồi mới hiện danh sách role để chọn; dialog có thêm trường domain (tùy chọn): bỏ trống thì role có hiệu lực toàn cục, điền thì role chỉ có hiệu lực trong domain đó. Gán một vai trò cho một người thao tác được từ ba lối vào, cả ba cùng ghi vào một tập grant: (1) thẻ Phân quyền trong form Nhân viên tại trang Client (xem PRD-EMP-001); (2) dialog grant ở tab Roles trong section theo user (FR-005); (3) dialog grant ở tab Users trong section theo role (FR-006). Gán hoặc thu hồi ở bất kỳ lối nào phản ánh ngay ở hai lối còn lại.
FR-009 - Idempotency. Grant là phép "thêm nếu chưa có": các mục đã được cấp bị bỏ qua, các mục mới được tạo; kết quả trả về số đã cấp / số bị bỏ qua để người thao tác đối chiếu. Riêng đường grant permission thô (coarse) trả về số đã cấp / số cập nhật / số thu hồi. Lặp lại cùng một thao tác grant cho ra cùng trạng thái cuối, số bản ghi không đổi.
FR-010 - Phạm vi & quyền thao tác. Phân quyền theo từng merchant đã bật: merchant đang hoạt động giới hạn các lookup policy (ví dụ danh sách user giữ một role). Quyền grant/revoke được enforce bằng kiểm tra quyền sở hữu theo từng target, kèm guard chống leo thang đặc quyền (không thể grant vượt quá quyền của chính mình). Nút grant/revoke trên giao diện không tự ẩn theo quyền của người đang đăng nhập - mọi nút luôn hiển thị, quyền được chặn ở server ngay khi bấm; server là nguồn chặn duy nhất, không có logic ẩn nút ở phía client.
FR-011 - Màn tra cứu bản ghi policy thô. Bảng liệt kê bản ghi policy ở mức thô với các cột: Variant, Loại chủ thể, Mã chủ thể, Loại target, Mã target, Action, Effect, Domain - tất cả lọc được - kèm form tạo/sửa từng bản ghi. Màn này dành cho đội vận hành khi truy vết chẩn đoán sâu; các section theo target (FR-004..008) là bề mặt vận hành chính cho công việc hằng ngày.
FR-012 - Bản clone team module. Cùng bề mặt section theo target nằm trong team module - dùng bởi owner tại trang Client, và bởi đội vận hành khi thao tác trong phạm vi một merchant cụ thể ở Back Office; giới hạn theo merchant đang thao tác. Gồm các section theo user, role và merchant; phần theo merchant ở bề mặt này có hai tab Users và Roles để xem và thu hồi - cấp mới thực hiện từ section theo user hoặc theo role.
FR-013 - Nhãn song ngữ. Mọi nhãn, tiêu đề, thông điệp và mô tả trên các màn hình trên đều có bản Anh và Việt.
5.1 Tiêu chí nghiệm thu
- Tạo permission mới với code chưa tồn tại → thành công; tạo tiếp permission trùng code → bị từ chối.
- Mở form sửa một permission → field code hiển thị nhưng không sửa được; các field còn lại sửa bình thường.
- Xóa một permission đang có grant hiệu lực → hệ thống từ chối kèm thông báo lỗi; xóa permission không có grant → thành công (soft-delete).
- Tạo role trên back office mà bỏ trống organizer → form báo lỗi bắt buộc; điền organizer → tạo thành công kèm các permission đã tick trong cây.
- Trong section theo user, tab Permissions: chế độ Trực tiếp chỉ hiện permission gán thẳng; chế độ Kế thừa chỉ hiện permission đến từ role; Tất cả là hợp của hai tập.
- Grant N permission cho một role trong đó K mục đã được cấp từ trước → kết quả báo đã cấp N−K, bỏ qua K; tổng số grant của role tăng đúng N−K.
- Lặp lại nguyên thao tác grant ở bước trước → báo đã cấp 0, bỏ qua N; dữ liệu không đổi.
- Gán role cho user: chưa chọn merchant → danh sách role trống kèm hướng dẫn chọn merchant; danh sách merchant chỉ gồm merchant mà user đã thuộc về.
- Gán role cho user với domain bỏ trống → role hiệu lực toàn cục; điền domain → quyền từ role chỉ có hiệu lực trong domain đó.
- Revoke một grant rồi kiểm tra lại danh sách → mục biến mất; user/role tương ứng mất quyền ngay ở lần kiểm tra kế tiếp.
- Owner mở team module → chỉ thấy dữ liệu trong merchant của mình.
- Chuyển ngôn ngữ Anh ↔ Việt → toàn bộ nhãn/thông điệp trên các màn này đổi theo, không sót chuỗi.
- Section theo merchant ở khu vực Đội ngũ có tab Roles: liệt kê role thuộc phạm vi merchant; thu hồi một role ở tab đó → role biến mất khỏi danh sách; thu hồi một user ở tab Users → user biến mất tương tự.
- Gán một vai trò cho một người qua form Nhân viên, rồi mở tab Roles trong section theo người đó → thấy đúng vai trò vừa gán; gán tiếp một vai trò khác qua tab Users trong section theo vai trò đó → mở lại form Nhân viên thấy đủ cả hai vai trò.
- Một user không có quyền sở hữu trên một target vẫn thấy nút grant/revoke tương ứng trên giao diện; bấm vào bị server từ chối kèm thông báo lỗi rõ ràng.
- Mở màn tra cứu bản ghi policy thô → bảng hiện đủ tám cột (Variant, Loại chủ thể, Mã chủ thể, Loại target, Mã target, Action, Effect, Domain), lọc được theo từng cột; sửa một bản ghi qua form → giá trị mới hiển thị ngay trong bảng.
6. Yêu cầu phi chức năng
| Khía cạnh | Yêu cầu |
|---|---|
| Toàn vẹn dữ liệu | Permission code duy nhất toàn hệ thống; permission đang có grant hiệu lực không thể xóa; bản ghi soft-delete, không xóa vật lý |
| Idempotency | Grant là "thêm nếu chưa có": mục đã có bị bỏ qua và được đếm; lặp lại thao tác cho cùng trạng thái cuối (đường membership báo số đã cấp/bỏ qua; đường grant thô báo số đã cấp/cập nhật/thu hồi) |
| Tenancy & authz | Quyền grant/revoke enforce bằng kiểm tra quyền sở hữu theo từng target + guard chống leo thang đặc quyền; merchant đang hoạt động giới hạn lookup; gán role cho user có thể kèm domain giới hạn phạm vi hiệu lực; UI không ẩn nút theo quyền, server là nguồn chặn duy nhất |
| Performance / scale | Màn danh sách đọc catalog và grant theo target không fan-out theo từng dòng; tra cứu grant phải đọc toàn bộ dòng grant của đối tượng (không bị cắt bởi giới hạn truy vấn mặc định) |
| i18n | Mọi nhãn và mô tả hiển thị cho người dùng đều song ngữ Anh/Việt |
7. UX & Luồng
Key screens: trong back office - (1) danh mục permission (danh sách / tạo / sửa); (2) màn quản lý role với cây permission; (3) màn policy definition với các tab target theo user / role / merchant, mỗi tab là bố cục hai panel + dialog grant. Màn tra cứu bản ghi policy thô phục vụ chẩn đoán sâu (FR-011). Trong app cho owner, và cho đội vận hành khi thao tác trong phạm vi một merchant cụ thể, cùng bề mặt target nằm dưới team module, giới hạn theo merchant đang thao tác.
8. Dữ liệu & Miền nghiệp vụ
| Entity | Vai trò | Thuộc tính chính |
|---|---|---|
| Permission | Mục catalog | Code duy nhất toàn hệ thống; subject (User / Role); action (create / read / update / delete / execute); scope (SYSTEM / ORGANIZER / MERCHANT); name/description song ngữ |
| Bản ghi policy | Một grant gắn chủ thể vào target | Variant (policy / group); loại chủ thể & loại target (5 loại principal: User / Role / Permission / Merchant / Organizer); action; effect (allow / deny); domain (tùy chọn - trống là toàn cục) |
| Role | Đối tượng nhận permission | Tên/mô tả song ngữ; trạng thái (Đang hoạt động / Ngưng hoạt động / Lưu trữ); priority; organizer (bắt buộc trên back office); merchant (tùy chọn); tập permission gán trực tiếp qua cây |
Chỉ ở mức khái niệm - schema đầy đủ và mô hình dữ liệu policy nằm trong tài liệu RBAC cho developer.
9. Phụ thuộc & Giả định
Phụ thuộc vào
| # | Feature | Phụ thuộc điều gì |
|---|---|---|
| 01 | Phần policy/grant (identity) | phần policy / permission / grant-revoke mà bề mặt này điều khiển. |
| 02 | Phân quyền theo từng merchant (platform core) | đã bật; model + giải quyết policy theo merchant + resolve grant trong một phạm vi. |
| 03 | Vai trò cố định & tùy chỉnh (URD-ROLE · URD-CROLE) | grant gắn vào các role đã tồn tại; chi tiết màn role trong PRD Vai trò cố định & tùy chỉnh. |
| 04 | Nhãn song ngữ | các nhãn Anh/Việt mà màn hình render. |
Giả định
| # | Giả định | Sai thì sao |
|---|---|---|
| 01 | Phần catalog/grant/revoke và effective-permission đã tồn tại sẵn (có trước increment này). | Nếu logic đó chưa tồn tại từ trước, bề mặt quản lý này không có gì để điều khiển - đây chỉ là UI, không phải engine. |
| 02 | Một merchant đang hoạt động được chọn theo từng request. | Không có merchant đang hoạt động thì các lookup policy (ví dụ danh sách user giữ một role) không biết giới hạn theo merchant nào. |
| 03 | Role, user và merchant tồn tại dưới dạng grant target. | Role, user hoặc merchant chưa tồn tại thì dialog grant không có gì để chọn, và một grant không có target hợp lệ để gắn vào. |
10. Kế hoạch phát hành & Tiêu chí
| Khía cạnh | Kế hoạch |
|---|---|
| Phase | P2 - xem feature catalog trong URD (PERM / GRANT / EFF đánh dấu Built) |
| Rollout | Tất cả merchant; bề mặt vận hành ở back office + bản clone team module; không có feature flag |
| Migration | Không - điều khiển các entity/logic hiện có; thêm nhãn song ngữ |
| Tiêu chí phát hành | Tiêu chí nghiệm thu ở §5.1 pass trên môi trường staging |
| Theo dõi | Tỷ lệ lỗi grant/revoke; số mục bị bỏ qua do idempotency; đối chiếu định kỳ kết quả tra cứu grant với dữ liệu grant thực tế |
Tham chiếu
- URD: Quyền hạn - Permission Catalog · Grant / Revoke · Effective Permissions & Scope
- PRD liên quan: Resource, Action & Domain Hierarchy · Vai trò cố định & tùy chỉnh · Employee management
- Module: Quyền hạn - URD
- Developer: @nx/identity · RBAC · Casbin Authorization
Rủi ro & Câu hỏi mở
| # | Rủi ro / câu hỏi | Giảm thiểu / trạng thái |
|---|---|---|
| 01 | Tra cứu grant bị cắt bởi giới hạn truy vấn mặc định | Đọc toàn bộ dòng grant của đối tượng để user có nhiều grant không bị âm thầm bỏ sót |
| 02 | Grant trùng lặp khi thao tác lặp lại | Idempotent theo rule ở FR-009 - mục đã có bị bỏ qua và được đếm |
| 03 | Hai cơ chế gán permission cho role (cây trong form role vs dialog trong policy definition) lệch nhau | Cả hai ghi vào cùng một tập grant; vai trò từng cơ chế được phân định ở FR-003 |
| 04 | Thao tác trên role theo merchant lệch giữa hai bề mặt | Vai trò theo merchant mới có ở khu vực Đội ngũ, chưa có ở màn Back Office dùng chung - FR-007 |
| 05 | Nhiều bề mặt cùng logic theo target (back office dùng chung, team module cho owner và cho đội vận hành trong phạm vi một merchant) lệch nhau | Dùng chung logic theo target; các bản team module là clone có giới hạn scope, không phải fork |
| 06 | Grant thô theo từng target không mở rộng được cho truy cập thô | Được thay thế bởi phân cấp resource/action/domain (PRD-HIER-001) |
Câu hỏi thường gặp
| # | Câu hỏi | Trả lời |
|---|---|---|
| 01 | Increment này có dựng engine authorization không? | Không - engine enforcement và phần grant/revoke/effective-permission đã tồn tại. Increment này là bề mặt quản lý điều khiển chúng. |
| 02 | "Section theo target" là gì? | Màn policy definition được chia thành các tab theo target: theo user (4 tab con: Roles / Permissions / Merchants / Organizers, kèm bộ chuyển chế độ Tất cả / Trực tiếp / Kế thừa cho permission), theo role (2 tab con: Permissions / Users), và theo merchant (tab Users; tab Roles hiện có ở khu vực Đội ngũ, màn Back Office dùng chung chưa có tab này). Mỗi tab con là một bảng grant + action revoke; các tab ở section theo user và theo role có thêm dialog grant. |
| 03 | Một grant có áp dụng ở mọi nơi không? | Tùy: khi gán role cho user, bỏ trống domain thì role hiệu lực toàn cục; điền domain thì quyền từ role chỉ hiệu lực trong domain đó. Các lookup policy luôn bị giới hạn theo merchant đang hoạt động, và quyền thao tác grant được kiểm soát bằng kiểm tra quyền sở hữu theo từng target. |
| 04 | Vì sao grant/revoke là idempotent? | Để thao tác lặp lại không tạo bản ghi trùng: mục đã được cấp bị bỏ qua và được đếm vào phần "bỏ qua" trong kết quả, nên lặp lại cùng thao tác luôn cho cùng trạng thái cuối. |
| 05 | Có mấy cách gán permission cho role? | Hai: tick trong cây permission khi tạo/sửa role (định nghĩa role trọn gói), hoặc dialog grant trong section theo role (điều chỉnh lẻ). Cả hai ghi vào cùng một tập grant. |
| 06 | Có mấy cách gán vai trò cho một người? | Ba: thẻ Phân quyền trong form Nhân viên tại trang Client, tab Roles trong section theo người, hoặc tab Users trong section theo vai trò. Cả ba cùng ghi vào một tập grant - gán hoặc thu hồi ở một nơi phản ánh ngay ở hai nơi còn lại. |
| 07 | Owner có tự quản lý policy được không? | Có - cùng bề mặt policy-definition được nhân bản vào team module, giới hạn theo merchant của owner; đội vận hành cũng dùng bản clone này khi thao tác trong phạm vi một merchant cụ thể. |
| 08 | Còn các grant thô manage/write thì sao? | Ngoài phạm vi ở đây - roll-up theo module và phân cấp resource/action/domain thuộc về PRD-HIER-001. |