Lewati ke konten utama

RBAC API

API yang lebih ramah untuk RBAC. API ini adalah subset dari API Manajemen. Pengguna RBAC dapat menggunakan API ini untuk menyederhanakan kode.

Referensi

variabel global e adalah instance Enforcer.

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

GetRolesForUser()

GetRolesForUser mendapatkan peran yang dimiliki oleh pengguna.

Contohnya:

res := e.GetRolesForUser("alice")

GetUsersForRole()

GetUsersForRole mendapatkan pengguna yang memiliki peran.

Misalnya:

res := e.GetUsersForRole("data1_admin")

HasRoleForUser()

HasRoleForUser menentukan apakah seorang pengguna memiliki peran.

Misalnya:

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

AddRoleForUser()

AddRoleForUser menambahkan peran untuk seorang pengguna. Mengembalikan false jika pengguna sudah memiliki peran tersebut (alias tidak terpengaruh).

Misalnya:

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

AddRolesForUser()

AddRolesForUser menambahkan beberapa peran untuk seorang pengguna. Mengembalikan false jika pengguna sudah memiliki salah satu peran ini (alias tidak terpengaruh).

Misalnya:

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

DeleteRoleForUser()

DeleteRoleForUser menghapus sebuah peran untuk pengguna. Mengembalikan false jika pengguna tidak memiliki peran tersebut (alias tidak terpengaruh).

Misalnya:

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

DeleteRolesForUser()

DeleteRolesForUser menghapus semua peran untuk pengguna. Mengembalikan false jika pengguna tidak memiliki peran apapun (alias tidak terpengaruh).

Misalnya:

e.DeleteRolesForUser("alice")

DeleteUser()

HapusPengguna menghapus seorang pengguna. Mengembalikan false jika pengguna tidak ada (alias tidak terpengaruh).

Contohnya:

e.DeleteUser("alice")

DeleteRole()

HapusPeran menghapus sebuah peran.

Contohnya:

e.DeleteRole("data2_admin")

DeletePermission()

HapusIzin menghapus sebuah izin. Mengembalikan false jika izin tidak ada (alias tidak terpengaruh).

Contohnya:

e.DeletePermission("read")

AddPermissionForUser()

TambahkanIzinUntukPengguna menambahkan izin untuk pengguna atau peran. Mengembalikan false jika pengguna atau peran sudah memiliki izin tersebut (alias tidak terpengaruh).

Contohnya:

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

AddPermissionsForUser()

TambahkanIzinUntukPengguna menambahkan beberapa izin untuk pengguna atau peran. Mengembalikan false jika pengguna atau peran sudah memiliki salah satu dari izin tersebut (alias tidak terpengaruh).

Contohnya:

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

DeletePermissionForUser()

DeletePermissionForUser menghapus izin untuk pengguna atau peran. Mengembalikan false jika pengguna atau peran tidak memiliki izin (alias tidak terpengaruh).

Contohnya:

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

DeletePermissionsForUser()

DeletePermissionsForUser menghapus izin untuk pengguna atau peran. Mengembalikan false jika pengguna atau peran tidak memiliki izin apapun (alias tidak terpengaruh).

Contohnya:

e.DeletePermissionsForUser("bob")

GetPermissionsForUser()

GetPermissionsForUser mendapatkan izin untuk pengguna atau peran.

Contohnya:

e.GetPermissionsForUser("bob")

HasPermissionForUser()

HasPermissionForUser menentukan apakah seorang pengguna memiliki izin.

Contohnya:

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

GetImplicitRolesForUser()

GetImplicitRolesForUser mendapatkan peran tersirat yang dimiliki oleh seorang pengguna. Dibandingkan dengan GetRolesForUser(), fungsi ini mengambil peran tidak langsung selain peran langsung.

Contohnya:

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

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

Contohnya:

e.GetImplicitRolesForUser("alice")

GetImplicitUsersForRole()

GetImplicitUsersForRole mengambil semua pengguna yang mewarisi peran tersebut. Dibandingkan dengan GetUsersForRole(), fungsi ini mengambil pengguna secara tidak langsung.

Sebagai contoh:

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

GetUsersForRole("role:user") hanya dapat mengambil: ["role:admin"].\ Tetapi GetImplicitUsersForRole("role:user") akan mengambil: ["role:admin", "alice"].

Sebagai contoh:

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

GetImplicitPermissionsForUser()

GetImplicitPermissionsForUser mengambil izin implisit untuk pengguna atau peran.\ Dibandingkan dengan GetPermissionsForUser(), fungsi ini mengambil izin untuk peran yang diwarisi.

Misalnya:

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

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

Misalnya:

e.GetImplicitPermissionsForUser("alice")

GetNamedImplicitPermissionsForUser()

GetNamedImplicitPermissionsForUser mendapatkan izin implisit untuk pengguna atau peran berdasarkan kebijakan bernama

Misalnya:

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

GetImplicitPermissionsForUser("alice") hanya mendapatkan: [["admin", "data1", "read"]], yang kebijakannya adalah default "p"

Tetapi Anda dapat menentukan kebijakan sebagai "p2" untuk mendapatkan: [["admin", "create"]] dengan GetNamedImplicitPermissionsForUser("p2","alice")

Misalnya:

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

GetDomainsForUser()

GetDomainsForUser mengambil semua domain yang dimiliki oleh seorang 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") bisa mengambil ["domain1", "domain2"]

Contohnya:

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

GetImplicitResourcesForUser()

GetImplicitResourcesForUser mengembalikan semua kebijakan yang seharusnya 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 implisit untuk sebuah izin.

Contohnya:

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

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

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

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

GetAllowedObjectConditions()

GetAllowedObjectConditions mengembalikan array string dari kondisi objek yang dapat 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

Catatan:

  1. awalan: Anda dapat menyesuaikan awalan dari kondisi objek, dan "r.obj." umumnya digunakan sebagai awalan. Setelah menghapus awalan, bagian yang tersisa adalah kondisi dari objek. Jika ada kebijakan obj yang tidak memenuhi persyaratan awalan, sebuah errors.ERR_OBJ_CONDITION akan dikembalikan.

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

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

GetImplicitUsersForResource()

GetImplicitUsersForResource()

GetImplicitUsersForResource mengembalikan pengguna implisit berdasarkan sumber daya.

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")
catatan

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