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.
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e, err := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")
const e = await newEnforcer('examples/rbac_model.conf', 'examples/rbac_policy.csv')
$e = new Enforcer('examples/rbac_model.conf', 'examples/rbac_policy.csv');
e = casbin.Enforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")
var e = new Enforcer("path/to/model.conf", "path/to/policy.csv");
let mut e = Enforcer::new("examples/rbac_model.conf", "examples/rbac_policy.csv").await?;
Enforcer e = new Enforcer("examples/rbac_model.conf", "examples/rbac_policy.csv");
GetRolesForUser()
GetRolesForUser mendapat peranan yang dimiliki oleh pengguna.
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
res := e.GetRolesForUser("alice")
const res = await e.getRolesForUser('alice')
$res = $e->getRolesForUser("alice");
roles = e.get_roles_for_user("alice")
var res = e.GetRolesForUser("alice");
let roles = e.get_roles_for_user("alice", None); // No domain
List<String> res = e.getRolesForUser("alice");
GetUsersForRole()
GetUsersForRole mendapat pengguna yang memiliki peranan.
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
res := e.GetUsersForRole("data1_admin")
const res = await e.getUsersForRole('data1_admin')
$res = $e->getUsersForRole("data1_admin");
users = e.get_users_for_role("data1_admin")
var res = e.GetUsersForRole("data1_admin");
let users = e.get_users_for_role("data1_admin", None); // No domain
List<String> res = e.getUsersForRole("data1_admin");
HasRoleForUser()
HasRoleForUser menentukan sama ada pengguna mempunyai peranan.
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
res := e.HasRoleForUser("alice", "data1_admin")
const res = await e.hasRoleForUser('alice', 'data1_admin')
$res = $e->hasRoleForUser("alice", "data1_admin");
has = e.has_role_for_user("alice", "data1_admin")
var res = e.HasRoleForUser("alice", "data1_admin");
let has = e.has_role_for_user("alice", "data1_admin", None); // No domain
boolean res = e.hasRoleForUser("alice", "data1_admin");
AddRoleForUser()
AddRoleForUser menambah peranan untuk pengguna. Mengembalikan salah jika pengguna sudah mempunyai peranan tersebut (iaitu tidak terjejas).
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.AddRoleForUser("alice", "data2_admin")
await e.addRoleForUser('alice', 'data2_admin')
$e->addRoleForUser("alice", "data2_admin");
e.add_role_for_user("alice", "data2_admin")
var added = e.AddRoleForUser("alice", "data2_admin");
or
var added = await e.AddRoleForUserAsync("alice", "data2_admin");
let added = e.add_role_for_user("alice", "data2_admin", None).await?; // No domain
boolean added = 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:
- Go
- Node.js
- Rust
var roles = []string{"data2_admin", "data1_admin"}
e.AddRolesForUser("alice", roles)
const roles = ["data1_admin", "data2_admin"];
roles.map((role) => e.addRoleForUser("alice", role));
let roles = vec!["data1_admin".to_owned(), "data2_admin".to_owned()];
let all_added = e.add_roles_for_user("alice", roles, None).await?; // No domain
DeleteRoleForUser()
DeleteRoleForUser menghapus peranan untuk pengguna. Mengembalikan salah jika pengguna tidak memiliki peranan tersebut (alias tidak terpengaruh).
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.DeleteRoleForUser("alice", "data1_admin")
await e.deleteRoleForUser('alice', 'data1_admin')
$e->deleteRoleForUser("alice", "data1_admin");
e.delete_role_for_user("alice", "data1_admin")
var deleted = e.DeleteRoleForUser("alice", "data1_admin");
or
var deleted = await e.DeleteRoleForUser("alice", "data1_admin");
let deleted = e.delete_role_for_user("alice", "data1_admin", None).await?; // No domain
boolean deleted = 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:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.DeleteRolesForUser("alice")
await e.deleteRolesForUser('alice')
$e->deleteRolesForUser("alice");
e.delete_roles_for_user("alice")
var deletedAtLeastOne = e.DeleteRolesForUser("alice");
or
var deletedAtLeastOne = await e.DeleteRolesForUserAsync("alice");
let deleted_at_least_one = e.delete_roles_for_user("alice", None).await?; // No domain
boolean deletedAtLeastOne = e.deleteRolesForUser("alice");
DeleteUser()
PadamPengguna memadamkan seorang pengguna. Mengembalikan salah jika pengguna tidak wujud (atau tidak terjejas).
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.DeleteUser("alice")
await e.deleteUser('alice')
$e->deleteUser("alice");
e.delete_user("alice")
var deleted = e.DeleteUser("alice");
or
var deleted = await e.DeleteUserAsync("alice");
let deleted = e.delete_user("alice").await?;
boolean deleted = e.deleteUser("alice");
DeleteRole()
PadamPeranan memadamkan peranan.
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.DeleteRole("data2_admin")
await e.deleteRole("data2_admin")
$e->deleteRole("data2_admin");
e.delete_role("data2_admin")
var deleted = e.DeleteRole("data2_admin");
or
var deleted = await e.DeleteRoleAsync("data2_admin");
let deleted = e.delete_role("data2_admin").await?;
e.deleteRole("data2_admin");
DeletePermission()
PadamKebenaran memadamkan kebenaran. Mengembalikan salah jika kebenaran tidak wujud (atau tidak terjejas).
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.DeletePermission("read")
await e.deletePermission('read')
$e->deletePermission("read");
e.delete_permission("read")
var deleted = e.DeletePermission("read");
or
var deleted = await e.DeletePermissionAsync("read");
let deleted = e.delete_permission(vec!["read".to_owned()]).await?;
boolean deleted = 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:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.AddPermissionForUser("bob", "read")
await e.addPermissionForUser('bob', 'read')
$e->addPermissionForUser("bob", "read");
e.add_permission_for_user("bob", "read")
var added = e.AddPermissionForUser("bob", "read");
or
var added = await e.AddPermissionForUserAsync("bob", "read");
let added = e.add_permission_for_user("bob", vec!["read".to_owned()]).await?;
boolean added = 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:
- Go
- Node.js
- Rust
var permissions = [][]string{{"data1", "read"},{"data2","write"}}
for i := 0; i < len(permissions); i++ {
e.AddPermissionsForUser("alice", permissions[i])
}
const permissions = [
["data1", "read"],
["data2", "write"],
];
permissions.map((permission) => e.addPermissionForUser("bob", ...permission));
let permissions = vec![
vec!["data1".to_owned(), "read".to_owned()],
vec!["data2".to_owned(), "write".to_owned()],
];
let all_added = e.add_permissions_for_user("bob", permissions).await?;
DeletePermissionForUser()
DeletePermissionForUser memadamkan kebenaran untuk pengguna atau peranan. Mengembalikan salah jika pengguna atau peranan tidak mempunyai kebenaran (aka tidak terjejas).
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.DeletePermissionForUser("bob", "read")
await e.deletePermissionForUser("bob", "read")
$e->deletePermissionForUser("bob", "read");
e.delete_permission_for_user("bob", "read")
var deleted = e.DeletePermissionForUser("bob", "read");
or
var deleted = await e.DeletePermissionForUserAsync("bob", "read");
let deleted = e.delete_permission_for_user("bob", vec!["read".to_owned()]).await?;
boolean deleted = 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:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.DeletePermissionsForUser("bob")
await e.deletePermissionsForUser('bob')
$e->deletePermissionsForUser("bob");
e.delete_permissions_for_user("bob")
var deletedAtLeastOne = e.DeletePermissionsForUser("bob");
or
var deletedAtLeastOne = await e.DeletePermissionsForUserAsync("bob");
let deleted_at_least_one = e.delete_permissions_for_user("bob").await?;
boolean deletedAtLeastOne = e.deletePermissionForUser("bob");
GetPermissionsForUser()
GetPermissionsForUser mendapatkan kebenaran untuk pengguna atau peranan.
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Java
e.GetPermissionsForUser("bob")
await e.getPermissionsForUser('bob')
$e->getPermissionsForUser("bob");
e.get_permissions_for_user("bob")
var permissions = e.GetPermissionsForUser("bob");
List<List<String>> permissions = e.getPermissionsForUser("bob");
HasPermissionForUser()
HasPermissionForUser menentukan sama ada pengguna mempunyai kebenaran.
Contohnya:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.HasPermissionForUser("alice", []string{"read"})
await e.hasPermissionForUser('alice', 'read')
$e->hasPermissionForUser("alice", []string{"read"});
has = e.has_permission_for_user("alice", "read")
var has = e.HasPermissionForUser("bob", "read");
let has = e.has_permission_for_user("alice", vec!["data1".to_owned(), "read".to_owned()]);
boolean has = e.hasPermissionForUser("alice", "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:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.GetImplicitRolesForUser("alice")
await e.getImplicitRolesForUser("alice")
$e->getImplicitRolesForUser("alice");
e.get_implicit_roles_for_user("alice")
var implicitRoles = e.GetImplicitRolesForUser("alice");
e.get_implicit_roles_for_user("alice", None); // No domain
List<String> implicitRoles = 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:
- Go
- Node.js
- Java
users := e.GetImplicitUsersForRole("role:user")
const users = e.getImplicitUsersForRole("role:user");
List<String> 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:
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e.GetImplicitPermissionsForUser("alice")
await e.getImplicitPermissionsForUser("alice")
$e->getImplicitPermissionsForUser("alice");
e.get_implicit_permissions_for_user("alice")
var implicitPermissions = e.GetImplicitPermissionsForUser("alice");
e.get_implicit_permissions_for_user("alice", None); // No domain
List<List<String>> implicitPermissions = 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:
- Go
- Python
e.GetNamedImplicitPermissionsForUser("p2","alice")
e.get_named_implicit_permissions_for_user("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:
- Go
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
- Go
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.
- Go
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:
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.Jika tatasusunan 'objectConditions' kosong, kembalikan
errors.ERR_EMPTY_CONDITION
- Go
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
.
- Go
ImplicitUsers, err := e.GetImplicitUsersForResource("data2")
GetImplicitUsersForResource("data1") akan mengembalikan [["alice", "data1", "read"]], nil
.