Langkau ke kandungan 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.

Rujukan​

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.

Contohnya:

res := e.GetUsersForRole("data1_admin")

HasRoleForUser()​

Checks whether a user has a specific role.

Contohnya:

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

AddRoleForUser()​

Assigns a role to a user. Mengembalikan salah jika pengguna sudah mempunyai peranan tersebut (iaitu tidak terjejas).

Contohnya:

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

AddRolesForUser()​

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

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

Sebagai contoh:

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

DeleteRolesForUser()​

Removes all roles from a user. Mengembalikan salah jika pengguna tidak memiliki peranan apa pun (alias tidak terpengaruh).

Sebagai contoh:

e.DeleteRolesForUser("alice")

DeleteUser()​

Removes a user from the system. Mengembalikan salah jika pengguna tidak wujud (atau tidak terjejas).

Sebagai contoh:

e.DeleteUser("alice")

DeleteRole()​

Removes a role from the system.

Sebagai contoh:

e.DeleteRole("data2_admin")

DeletePermission()​

Removes a permission from the system. Mengembalikan salah jika kebenaran tidak wujud (atau tidak terjejas).

Sebagai contoh:

e.DeletePermission("read")

AddPermissionForUser()​

Grants a permission to a user or role. Mengembalikan salah jika pengguna atau peranan sudah mempunyai kebenaran tersebut (iaitu tidak terjejas).

Sebagai contoh:

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

AddPermissionsForUser()​

Grants multiple permissions to a user or role. Mengembalikan salah jika pengguna atau peranan sudah mempunyai salah satu daripada kebenaran tersebut (iaitu tidak terjejas).

Sebagai 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 salah jika pengguna atau peranan tidak mempunyai kebenaran (aka tidak terjejas).

Sebagai contoh:

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

DeletePermissionsForUser()​

Revokes all permissions from a user or role. Mengembalikan salah jika pengguna atau peranan tidak mempunyai sebarang kebenaran (aka tidak terjejas).

Sebagai contoh:

e.DeletePermissionsForUser("bob")

GetPermissionsForUser()​

Retrieves all permissions for a user or role.

Sebagai contoh:

e.GetPermissionsForUser("bob")

GetNamedPermissionsForUser()​

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

Sebagai 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 sama ada pengguna mempunyai kebenaran.

Sebagai contoh:

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.

Sebagai contoh:

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

Sebagai contoh:

e.GetImplicitRolesForUser("alice")

GetNamedImplicitRolesForUser()​

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

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

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

Sebagai contoh:

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

Sebagai contoh:

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.

Sebagai contoh:

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

Sebagai contoh:

e.GetImplicitPermissionsForUser("alice")

GetNamedImplicitPermissionsForUser()​

GetNamedImplicitPermissionsForUser mendapatkan kebenaran tersirat untuk pengguna atau peranan berdasarkan dasar bernama

Sebagai contoh:

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.

Sebagai 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") boleh mendapatkan ["domain1", "domain2"]

Sebagai contoh:

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

GetImplicitResourcesForUser()​

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

Sebagai 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.

Sebagai contoh:

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

GetImplicitObjectPatternsForUser()​

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

Sebagai 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.

Sebagai 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

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

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

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

Hanya pengguna akan dikembalikan, peranan (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.).

Sebagai 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.