Langkau ke kandungan utama

RBAC API

API yang lebih mesra untuk RBAC. API ini adalah subset dari API Pengurusan. Pengguna RBAC boleh menggunakan API ini untuk memudahkan kod.

Rujukan

pemboleh ubah global e adalah contoh Enforcer.

e, err := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")

GetRolesForUser()

GetRolesForUser mendapat peranan yang dimiliki oleh pengguna.

Contohnya:

res := e.GetRolesForUser("alice")

GetUsersForRole()

GetUsersForRole mendapat pengguna yang memiliki peranan.

Contohnya:

res := e.GetUsersForRole("data1_admin")

HasRoleForUser()

HasRoleForUser menentukan sama ada pengguna mempunyai peranan.

Contohnya:

res := e.HasRoleForUser("alice", "data1_admin")

AddRoleForUser()

AddRoleForUser menambah peranan untuk pengguna. Mengembalikan salah jika pengguna sudah mempunyai peranan tersebut (iaitu tidak terjejas).

Contohnya:

e.AddRoleForUser("alice", "data2_admin")

AddRolesForUser()

AddRolesForUser menambah pelbagai peranan untuk pengguna. Mengembalikan salah jika pengguna sudah memiliki salah satu peranan ini (alias tidak terpengaruh).

Contohnya:

var roles = []string{"data2_admin", "data1_admin"}
e.AddRolesForUser("alice", roles)

DeleteRoleForUser()

DeleteRoleForUser menghapus peranan untuk pengguna. Mengembalikan salah jika pengguna tidak memiliki peranan tersebut (alias tidak terpengaruh).

Contohnya:

e.DeleteRoleForUser("alice", "data1_admin")

DeleteRolesForUser()

DeleteRolesForUser menghapus semua peranan untuk pengguna. Mengembalikan salah jika pengguna tidak memiliki peranan apa pun (alias tidak terpengaruh).

Contohnya:

e.DeleteRolesForUser("alice")

DeleteUser()

PadamPengguna memadamkan seorang pengguna. Mengembalikan salah jika pengguna tidak wujud (atau tidak terjejas).

Contohnya:

e.DeleteUser("alice")

DeleteRole()

PadamPeranan memadamkan peranan.

Contohnya:

e.DeleteRole("data2_admin")

DeletePermission()

PadamKebenaran memadamkan kebenaran. Mengembalikan salah jika kebenaran tidak wujud (atau tidak terjejas).

Contohnya:

e.DeletePermission("read")

AddPermissionForUser()

TambahKebenaranUntukPengguna menambahkan kebenaran untuk pengguna atau peranan. Mengembalikan salah jika pengguna atau peranan sudah mempunyai kebenaran tersebut (iaitu tidak terjejas).

Contohnya:

e.AddPermissionForUser("bob", "read")

AddPermissionsForUser()

TambahKebenaranBanyakUntukPengguna menambahkan beberapa kebenaran untuk pengguna atau peranan. Mengembalikan salah jika pengguna atau peranan sudah mempunyai salah satu daripada kebenaran tersebut (iaitu tidak terjejas).

Contohnya:

var permissions = [][]string{{"data1", "read"},{"data2","write"}}
for i := 0; i < len(permissions); i++ {
e.AddPermissionsForUser("alice", permissions[i])
}

DeletePermissionForUser()

DeletePermissionForUser memadamkan kebenaran untuk pengguna atau peranan. Mengembalikan salah jika pengguna atau peranan tidak mempunyai kebenaran (aka tidak terjejas).

Contohnya:

e.DeletePermissionForUser("bob", "read")

DeletePermissionsForUser()

DeletePermissionsForUser memadamkan kebenaran untuk pengguna atau peranan. Mengembalikan salah jika pengguna atau peranan tidak mempunyai sebarang kebenaran (aka tidak terjejas).

Contohnya:

e.DeletePermissionsForUser("bob")

GetPermissionsForUser()

GetPermissionsForUser mendapatkan kebenaran untuk pengguna atau peranan.

Contohnya:

e.GetPermissionsForUser("bob")

HasPermissionForUser()

HasPermissionForUser menentukan sama ada pengguna mempunyai kebenaran.

Contohnya:

e.HasPermissionForUser("alice", []string{"read"})

GetImplicitRolesForUser()

GetImplicitRolesForUser mendapatkan peranan tersirat yang dimiliki oleh pengguna. Berbanding dengan GetRolesForUser(), fungsi ini mengambil peranan tidak langsung selain peranan langsung.

Contohnya:

g, alice, role:admin  
g, role:admin, role:user

GetRolesForUser("alice") hanya boleh mendapatkan: ["role:admin"].\ Tetapi GetImplicitRolesForUser("alice") akan mendapat: ["role:admin", "role:user"].

Contohnya:

e.GetImplicitRolesForUser("alice")

GetImplicitUsersForRole()

DapatkanPenggunaTersiratUntukPeranan mendapat semua pengguna yang mewarisi peranan tersebut. Berbanding dengan DapatkanPenggunaUntukPeranan(), fungsi ini mengambil pengguna tidak langsung.

Contohnya:

g, alice, role:admin  
g, role:admin, role:user

DapatkanPenggunaUntukPeranan("peranan:pengguna") hanya boleh mendapat: ["peranan:admin"].\ Tetapi DapatkanPenggunaTersiratUntukPeranan("peranan:pengguna") akan mendapat: ["peranan:admin", "alice"].

Contohnya:

users := e.GetImplicitUsersForRole("role:user")

GetImplicitPermissionsForUser()

DapatkanKebenaranTersiratUntukPengguna mendapat kebenaran tersirat untuk pengguna atau peranan.\ Berbanding dengan DapatkanKebenaranUntukPengguna(), fungsi ini mengambil kebenaran untuk peranan yang diwarisi.

Contohnya:

p, admin, data1, read  
p, alice, data2, read
g, alice, admin

GetPermissionsForUser("alice") hanya boleh mendapatkan: [["alice", "data2", "read"]].\ Tetapi GetImplicitPermissionsForUser("alice") akan mendapat: [["admin", "data1", "read"], ["alice", "data2", "read"]].

Contohnya:

e.GetImplicitPermissionsForUser("alice")

GetNamedImplicitPermissionsForUser()

GetNamedImplicitPermissionsForUser mendapatkan kebenaran tersirat untuk pengguna atau peranan berdasarkan dasar bernama

Contohnya:

p, admin, data1, read
p2, admin, create
g, alice, admin

GetImplicitPermissionsForUser("alice") hanya mendapat: [["admin", "data1", "read"]], yang dasarnya adalah lalai "p"

Tetapi anda boleh menentukan dasar sebagai "p2" untuk mendapatkan: [["admin", "create"]] melalui GetNamedImplicitPermissionsForUser("p2","alice")

Contohnya:

e.GetNamedImplicitPermissionsForUser("p2","alice")

GetDomainsForUser()

GetDomainsForUser mendapatkan semua domain yang dimiliki oleh pengguna.

Contohnya:

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

GetDomainsForUser("alice") boleh mendapatkan ["domain1", "domain2"]

Contohnya:

result, err := e.GetDomainsForUser("alice")

GetImplicitResourcesForUser()

GetImplicitResourcesForUser mengembalikan semua polisi yang sepatutnya benar untuk pengguna.

Contohnya:

p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write

g, alice, data2_admin

GetImplicitResourcesForUser("alice") akan mengembalikan

resources, err := e.GetImplicitResourcesForUser("alice")

GetImplicitUsersForPermission()

GetImplicitUsersForPermission mendapatkan pengguna tidak langsung untuk suatu kebenaran.

Contohnya:

p, admin, data1, read
p, bob, data1, read
g, alice, admin

GetImplicitUsersForPermission("data1", "read") akan mengembalikan: ["alice", "bob"].

Perhatian: hanya pengguna yang akan dikembalikan, peranan (argumen ke-2 dalam "g") akan dikecualikan.

users, err := e.GetImplicitUsersForPermission("data1", "read")

GetAllowedObjectConditions()

GetAllowedObjectConditions mengembalikan susunan rentetan syarat objek yang boleh diakses oleh pengguna.

Contohnya:

p, alice, r.obj.price < 25, read
p, admin, r.obj.category_id = 2, read
p, bob, r.obj.author = bob, write

g, alice, admin

e.GetAllowedObjectConditions("alice", "read", "r.obj.") akan mengembalikan ["price < 25", "category_id = 2"], nil

Perhatian:

  1. awalan: Anda boleh menyesuaikan awalan syarat objek, dan "r.obj." biasanya digunakan sebagai awalan. Selepas mengalih keluar awalan, bahagian yang tinggal ialah syarat objek. Jika terdapat dasar obj yang tidak memenuhi keperluan awalan, errors.ERR_OBJ_CONDITION akan dikembalikan.

  2. Jika tatasusunan 'objectConditions' kosong, kembalikan errors.ERR_EMPTY_CONDITION

conditions, err := e.GetAllowedObjectConditions("alice", "read", "r.obj.")

GetImplicitUsersForResource()

GetImplicitUsersForResource()

GetImplicitUsersForResource mengembalikan pengguna tersirat berdasarkan sumber.

p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, data2_admin

Contohnya:

GetImplicitUsersForResource("data2") akan mengembalikan [["bob", "data2", "write"], ["alice", "data2", "read"] ["alice", "data2", "write"]], nil.

ImplicitUsers, err := e.GetImplicitUsersForResource("data2")
nota

GetImplicitUsersForResource("data1") akan mengembalikan [["alice", "data1", "read"]], nil.