Lewati ke konten utama

RBAC API

The RBAC API is a convenience layer for role-based operations (roles for user, users for role, permissions, etc.). It is a subset of the Management API aimed at RBAC use cases.

Referensi​

The global variable e represents an Enforcer instance.

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

GetRolesForUser()​

Retrieves all roles assigned to a user.

Contohnya:

res := e.GetRolesForUser("alice")

GetUsersForRole()​

Retrieves all users assigned to a role.

Misalnya:

res := e.GetUsersForRole("data1_admin")

HasRoleForUser()​

Checks whether a user has a specific role.

Misalnya:

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

AddRoleForUser()​

Assigns a role to a user. Mengembalikan false jika pengguna sudah memiliki peran tersebut (alias tidak terpengaruh).

Misalnya:

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

AddRolesForUser()​

Assigns multiple roles to a user. 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()​

Removes a role from a user. Mengembalikan false jika pengguna tidak memiliki peran tersebut (alias tidak terpengaruh).

Contoh:

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

DeleteRolesForUser()​

Removes all roles from a user. Mengembalikan false jika pengguna tidak memiliki peran apapun (alias tidak terpengaruh).

Contoh:

e.DeleteRolesForUser("alice")

DeleteUser()​

Removes a user from the system. Mengembalikan false jika pengguna tidak ada (alias tidak terpengaruh).

Contoh:

e.DeleteUser("alice")

DeleteRole()​

Removes a role from the system.

Contoh:

e.DeleteRole("data2_admin")

DeletePermission()​

Removes a permission from the system. Mengembalikan false jika izin tidak ada (alias tidak terpengaruh).

Contoh:

e.DeletePermission("read")

AddPermissionForUser()​

Grants a permission to a user or role. Mengembalikan false jika pengguna atau peran sudah memiliki izin tersebut (alias tidak terpengaruh).

Contoh:

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

AddPermissionsForUser()​

Grants multiple permissions to a user or role. Mengembalikan false jika pengguna atau peran sudah memiliki salah satu dari izin tersebut (alias tidak terpengaruh).

Contoh:

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

DeletePermissionForUser()​

Revokes a permission from a user or role. Mengembalikan false jika pengguna atau peran tidak memiliki izin (alias tidak terpengaruh).

Contoh:

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

DeletePermissionsForUser()​

Revokes all permissions from a user or role. Mengembalikan false jika pengguna atau peran tidak memiliki izin apapun (alias tidak terpengaruh).

Contoh:

e.DeletePermissionsForUser("bob")

GetPermissionsForUser()​

Retrieves all permissions for a user or role.

Contoh:

e.GetPermissionsForUser("bob")

GetNamedPermissionsForUser()​

GetNamedPermissionsForUser gets permissions for a user or role by named policy.

Contoh:

p, alice, data1, read
p, bob, data2, write
p2, admin, create
g, alice, admin

GetNamedPermissionsForUser("p", "alice") will return [["alice", "data1", "read"]]. GetNamedPermissionsForUser("p2", "alice") will return [["admin", "create"]].

permissions, err := e.GetNamedPermissionsForUser("p", "alice")

HasPermissionForUser()​

HasPermissionForUser menentukan apakah seorang pengguna memiliki izin.

Contoh:

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.

Contoh:

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"].

Contoh:

e.GetImplicitRolesForUser("alice")

GetNamedImplicitRolesForUser()​

GetNamedImplicitRolesForUser gets implicit roles that a user has by named policy.

Contoh:

g, alice, admin
g, admin, super_admin
g2, alice, user
g2, user, guest

GetNamedImplicitRolesForUser("g", "alice") will return ["admin", "super_admin"]. GetNamedImplicitRolesForUser("g2", "alice") will return ["user", "guest"].

roles, err := e.GetNamedImplicitRolesForUser("g", "alice")

GetImplicitUsersForRole()​

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

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"].

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.

Contoh:

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"]].

Contoh:

e.GetImplicitPermissionsForUser("alice")

GetNamedImplicitPermissionsForUser()​

GetNamedImplicitPermissionsForUser mendapatkan izin implisit untuk pengguna atau peran berdasarkan kebijakan bernama

Contoh:

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

Contohnya:

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

GetDomainsForUser()​

GetDomainsForUser mengambil semua domain yang dimiliki oleh seorang pengguna.

Contoh:

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"]

Contoh:

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

GetImplicitResourcesForUser()​

Returns all policies that apply to a user, including those inherited through roles.

Contoh:

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()​

Retrieves all users with a specific permission, including those with implicit permissions through roles.

Contoh:

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

GetImplicitObjectPatternsForUser()​

Returns all object patterns (including wildcards) that a user can access for a given domain and action.

Contoh:

p, admin, chronicle/123, location/*, read
p, user, chronicle/456, location/789, read
g, alice, admin
g, bob, user

GetImplicitObjectPatternsForUser("alice", "chronicle/123", "read") will return ["location/*"]. GetImplicitObjectPatternsForUser("bob", "chronicle/456", "read") will return ["location/789"].

patterns, err := e.GetImplicitObjectPatternsForUser("alice", "chronicle/123", "read")

GetAllowedObjectConditions()​

Returns object conditions that a user can access.

Contoh:

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()​

Returns all users with access to a resource, including those with implicit permissions through roles.

Contoh:

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

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

GetNamedImplicitUsersForResource()​

Returns all users with access to a resource through a named policy, including those with implicit permissions through roles. This function handles resource role relationships through named policies (e.g., g2, g3, etc.).

Contoh:

p, admin_group, admin_data, *
g, admin, admin_group
g2, app, admin_data

GetNamedImplicitUsersForResource("g2", "app") will return users who have access to admin_data through g2 relationship.

ImplicitUsers, err := e.GetNamedImplicitUsersForResource("g2", "app")

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.