Bỏ qua đến nội dung chính

RBAC with Domains API

Một API thân thiện hơn với người dùng cho RBAC với các miền. API này là một tập hợp con của API Quản lý. Người dùng RBAC có thể sử dụng API này để đơn giản hóa mã của họ.

Tài liệu tham khảo

Biến toàn cục e đại diện cho thể hiện Enforcer.

e, err := NewEnforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv")

GetUsersForRoleInDomain()

Hàm GetUsersForRoleInDomain() lấy danh sách người dùng có một vai trò trong một lĩnh vực.

Ví dụ:

res := e.GetUsersForRoleInDomain("admin", "domain1")

GetRolesForUserInDomain()

Hàm GetRolesForUserInDomain() lấy danh sách vai trò mà một người dùng có trong một lĩnh vực.

Ví dụ:

res := e.GetRolesForUserInDomain("admin", "domain1")

GetPermissionsForUserInDomain()

Hàm GetPermissionsForUserInDomain() lấy danh sách quyền cho một người dùng hoặc vai trò trong một lĩnh vực.

Ví dụ:

res := e.GetPermissionsForUserInDomain("alice", "domain1")

AddRoleForUserInDomain()

Hàm AddRoleForUserInDomain() thêm một vai trò cho một người dùng trong một lĩnh vực. Nó trả về false nếu người dùng đã có vai trò đó (không có thay đổi nào được thực hiện).

Ví dụ:

ok, err := e.AddRoleForUserInDomain("alice", "admin", "domain1")

DeleteRoleForUserInDomain()

Hàm DeleteRoleForUserInDomain() loại bỏ một vai trò cho người dùng trong một miền. Nó trả về false nếu người dùng không có vai trò đó (không có thay đổi nào được thực hiện).

Ví dụ:

ok, err := e.DeleteRoleForUserInDomain("alice", "admin", "domain1")

DeleteRolesForUserInDomain()

Hàm DeleteRolesForUserInDomain() loại bỏ tất cả các vai trò cho người dùng trong một miền. Nó trả về false nếu người dùng không có bất kỳ vai trò nào (không có thay đổi nào được thực hiện).

Ví dụ:

ok, err := e.DeleteRolesForUserInDomain("alice", "domain1")

GetAllUsersByDomain()

Hàm LấyTấtCảNgườiDùngTheoTênMiền() lấy tất cả người dùng liên kết với tên miền đã cho. Nó trả về một mảng chuỗi rỗng nếu không có tên miền nào được định nghĩa trong mô hình.

Ví dụ:

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain()

Hàm XóaTấtCảNgườiDùngTheoTênMiền() xóa tất cả người dùng liên kết với tên miền đã cho. Nó trả về false nếu không có tên miền nào được định nghĩa trong mô hình.

Ví dụ:

ok, err := e.DeleteAllUsersByDomain("domain1")

DeleteDomains()

XóaTấtCảTênMiền sẽ xóa tất cả người dùng và vai trò liên kết. Nó sẽ xóa tất cả các miền nếu tham số không được cung cấp.

Ví dụ:

ok, err := e.DeleteDomains("domain1", "domain2")

GetAllDomains()

GetAllDomains sẽ lấy tất cả các miền.

Ví dụ:

res, _ := e.GetAllDomains()
ghi chú

Nếu bạn đang xử lý một miền như name::domain, nó có thể dẫn đến hành vi không mong muốn. Trong Casbin, :: là một từ khóa dành riêng, giống như for, if trong một ngôn ngữ lập trình, chúng ta không bao giờ nên đặt :: vào trong một miền.

GetAllRolesByDomain()

GetAllRolesByDomain sẽ lấy tất cả các vai trò liên quan đến miền.

Ví dụ:

res := e.GetAllRolesByDomain("domain1")
ghi chú

Phương pháp này không áp dụng cho các miền có mối quan hệ kế thừa, còn được gọi là vai trò ngầm định.

GetImplicitUsersForResourceByDomain()

GetImplicitUsersForResourceByDomain trả về người dùng ngầm định dựa trên tài nguyên và miền.

Ví dụ:

p, admin, domain1, data1, read
p, admin, domain1, data1, write
p, admin, domain2, data2, read
p, admin, domain2, data2, write
g, alice, admin, domain1
g, bob, admin, domain2

GetImplicitUsersForResourceByDomain("data1", "domain1") sẽ trả về [["alice", "domain1", "data1", "read"],["alice", "domain1", "data1", "write"]], nil

ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
ghi chú

Chỉ người dùng sẽ được trả về, vai trò (đối số thứ 2 trong "g") sẽ bị loại trừ.