RBAC API
RBAC için daha dostane bir API. Bu API, Yönetim API'sinin bir alt kümesidir. RBAC kullanıcıları bu API'yi kodu basitleştirmek için kullanabilir.
Referans
global değişken e
bir Enforcer örneğidir.
- 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, bir kullanıcının sahip olduğu rolleri alır.
Örneğin:
- 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, bir role sahip olan kullanıcıları alır.
Örneğin:
- 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, bir kullanıcının bir rolü olup olmadığını belirler.
Örneğin:
- 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, bir kullanıcıya bir rol ekler. Kullanıcı zaten rolü sahipse false döner (yani etkilenmez).
Örneğin:
- 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, bir kullanıcı için birden fazla rol ekler. Kullanıcının zaten bu rollerden birine sahip olması durumunda false döner (yani etkilenmez).
Örneğin:
- 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, bir kullanıcı için bir rolü siler. Kullanıcının rolü olmadığı takdirde false döner (yani etkilenmez).
Örneğin:
- 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, bir kullanıcı için tüm rolleri siler. Kullanıcının hiç rolü olmadığı takdirde false döner (yani etkilenmez).
Örneğin:
- 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()
KullanıcıSil bir kullanıcıyı siler. Kullanıcı yoksa (yani etkilenmemişse) false döner.
Örneğin:
- 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()
RolSil bir rolü siler.
Örneğin:
- 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()
İzinSil bir izni siler. İzin yoksa (yani etkilenmemişse) false döner.
Örneğin:
- 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()
AddPermissionForUser, bir kullanıcıya veya rolüne izin ekler. Kullanıcı veya rol zaten izne sahipse false döndürür (yani etkilenmez).
Örneğin:
- 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()
AddPermissionsForUser, bir kullanıcıya veya rolüne birden fazla izin ekler. Kullanıcı veya rol zaten izinlerden birine sahipse false döndürür (yani etkilenmez).
Örneğin:
- 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, bir kullanıcı veya rol için izni siler. Kullanıcı veya rol izne sahip değilse (yani etkilenmemişse) false döner.
Örneğin:
- 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, bir kullanıcı veya rol için izinleri siler. Kullanıcı veya rolün herhangi bir izni yoksa (yani etkilenmemişse) false döner.
Örneğin:
- 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, bir kullanıcı veya rol için izinleri alır.
Örneğin:
- 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()
KullaniciIcinIzinVarMi, bir kullanıcının bir izne sahip olup olmadığını belirler.
Örneğin:
- 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()
KullaniciyaOlanGizliRolleriGetir, bir kullanıcının sahip olduğu gizli rollerini alır. GetRolesForUser() ile karşılaştırıldığında, bu fonksiyon doğrudan rollerin yanı sıra dolaylı rolleride alır.
Örneğin:
g, alice, role:admin
g, role:admin, role:user
GetRolesForUser("alice") sadece şunları alabilir: ["role:admin"].\ Ama GetImplicitRolesForUser("alice") şunları alacak: ["role:admin", "role:user"].
Örneğin:
- 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()
GetImplicitUsersForRole, rolü miras alan tüm kullanıcıları alır. GetUsersForRole() ile karşılaştırıldığında, bu fonksiyon dolaylı kullanıcıları alır.
Örneğin:
g, alice, role:admin
g, role:admin, role:user
GetUsersForRole("role:user") sadece şunları alabilir: ["role:admin"].\ Ancak GetImplicitUsersForRole("role:user") şunları alacak: ["role:admin", "alice"].
Örneğin:
- Go
- Node.js
- Java
users := e.GetImplicitUsersForRole("role:user")
const users = e.getImplicitUsersForRole("role:user");
List<String> users = e.getImplicitUsersForRole("role:user");
GetImplicitPermissionsForUser()
GetImplicitPermissionsForUser, bir kullanıcı veya rol için örtük izinleri alır.\ GetPermissionsForUser() ile karşılaştırıldığında, bu fonksiyon miras alınan roller için izinleri alır.
Örneğin:
p, admin, data1, read
p, alice, data2, read
g, alice, admin
GetPermissionsForUser("alice") sadece şunları alabilir: [["alice", "data2", "read"]].\ Ancak GetImplicitPermissionsForUser("alice") şunları alacak: [["admin", "data1", "read"], ["alice", "data2", "read"]].
Örneğin:
- 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, bir kullanıcı veya rol için adlandırılmış politikaya göre örtük izinleri alır. GetImplicitPermissionsForUser()'a kıyasla, bu fonksiyonun politikayı belirtmenize izin verdiğini görüyoruz.
Örneğin:
p, admin, data1, read
p2, admin, create
g, alice, admin
GetImplicitPermissionsForUser("alice") sadece şunları alır: [["admin", "data1", "read"]], politikası varsayılan "p" olanlar.
Ancak politikayı "p2" olarak belirleyerek GetNamedImplicitPermissionsForUser("p2","alice") ile şunları alabilirsiniz: [["admin", "create"]]
Örneğin:
- Go
- Python
e.GetNamedImplicitPermissionsForUser("p2","alice")
e.get_named_implicit_permissions_for_user("p2", "alice")
GetDomainsForUser()
GetDomainsForUser, bir kullanıcının sahip olduğu tüm alanları alır.
Örneğin:
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") şunları alabilir: ["domain1", "domain2"]
Örneğin:
- Go
result, err := e.GetDomainsForUser("alice")
GetImplicitResourcesForUser()
GetImplicitResourcesForUser, kullanıcı için doğru olması gereken tüm politikaları döndürür.
Örneğin:
p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, data2_admin
GetImplicitResourcesForUser("alice") şunu döndürecektir:
- Go
resources, err := e.GetImplicitResourcesForUser("alice")
GetImplicitUsersForPermission()
GetImplicitUsersForPermission, bir izin için örtük kullanıcıları alır.
Örneğin:
p, admin, data1, read
p, bob, data1, read
g, alice, admin
GetImplicitUsersForPermission("data1", "read") şunları döndürecektir: ["alice", "bob"]
.
Not: Yalnızca kullanıcılar döndürülecektir, roller ("g" içindeki 2. argüman) dahil edilmeyecektir.
- Go
users, err := e.GetImplicitUsersForPermission("data1", "read")
GetAllowedObjectConditions()
GetAllowedObjectConditions, kullanıcının erişebileceği nesne koşullarının bir dize dizisini döndürür.
Örneğin:
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.") şunları döndürecektir: ["price < 25", "category_id = 2"], nil
Not:
ön ek: Nesne koşullarının ön ekini özelleştirebilirsiniz ve "r.obj." genellikle bir ön ek olarak kullanılır. Ön eki kaldırdıktan sonra, kalan kısım nesnenin koşuludur. Eğer ön ek gereksinimini karşılamayan bir obj politika varsa,
errors.ERR_OBJ_CONDITION
döndürülecektir.Eğer 'objectConditions' dizisi boşsa,
errors.ERR_EMPTY_CONDITION
döndürün.
- Go
conditions, err := e.GetAllowedObjectConditions("alice", "read", "r.obj.")
GetImplicitUsersForResource()
GetImplicitUsersForResource()
GetImplicitUsersForResource, kaynağa göre örtülü kullanıcı döndürür.
p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, data2_admin
Örneğin:
GetImplicitUsersForResource("data2") şunu döndürecektir: [["bob", "data2", "write"], ["alice", "data2", "read"] ["alice", "data2", "write"]], nil
.
- Go
ImplicitUsers, err := e.GetImplicitUsersForResource("data2")
GetImplicitUsersForResource("data1") şunu döndürecektir: [["alice", "data1", "read"]], nil
.