RBAC with Domains API
Etki alanlarıyla RBAC için daha kullanıcı dostu bir API. Bu API, Yönetim API'sinin bir alt kümesidir. RBAC kullanıcıları, kodlarını basitleştirmek için bu API'yi kullanabilir.
Referans
Küresel değişken e
, Enforcer örneğini temsil eder.
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e, err := NewEnforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv")
const e = await newEnforcer('examples/rbac_with_domains_model.conf', 'examples/rbac_with_domains_policy.csv')
$e = new Enforcer('examples/rbac_with_domains_model.conf', 'examples/rbac_with_domains_policy.csv');
e = casbin.Enforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv")
var e = new Enforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv");
let mut e = Enforcer::new("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv").await?;
Enforcer e = new Enforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv");
GetUsersForRoleInDomain()
GetUsersForRoleInDomain()
fonksiyonu, bir alan içinde bir rolü olan kullanıcıları alır.
Örneğin:
- Go
- Node.js
- Python
res := e.GetUsersForRoleInDomain("admin", "domain1")
const res = e.getUsersForRoleInDomain("admin", "domain1")
res = e.get_users_for_role_in_domain("admin", "domain1")
GetRolesForUserInDomain()
GetRolesForUserInDomain()
fonksiyonu, bir kullanıcının bir alan içinde sahip olduğu rolleri alır.
Örneğin:
- Go
- Node.js
- Python
- Java
res := e.GetRolesForUserInDomain("admin", "domain1")
const res = e.getRolesForUserInDomain("alice", "domain1")
res = e.get_roles_for_user_in_domain("alice", "domain1")
List<String> res = e.getRolesForUserInDomain("admin", "domain1");
GetPermissionsForUserInDomain()
GetPermissionsForUserInDomain()
fonksiyonu, bir kullanıcı veya rol için bir alan içindeki izinleri alır.
Örneğin:
- Go
- Java
res := e.GetPermissionsForUserInDomain("alice", "domain1")
List<List<String>> res = e.getPermissionsForUserInDomain("alice", "domain1");
AddRoleForUserInDomain()
AddRoleForUserInDomain()
fonksiyonu, bir kullanıcı için bir alan içinde bir rol ekler. Kullanıcı zaten rolü sahipse false
döner (değişiklik yapılmaz).
Örneğin:
- Go
- Python
- Java
ok, err := e.AddRoleForUserInDomain("alice", "admin", "domain1")
ok = e.add_role_for_user_in_domain("alice", "admin", "domain1")
boolean ok = e.addRoleForUserInDomain("alice", "admin", "domain1");
DeleteRoleForUserInDomain()
DeleteRoleForUserInDomain()
fonksiyonu, bir kullanıcı için bir alan içindeki rolü kaldırır. Kullanıcının rolü yoksa false
döner (değişiklik yapılmaz).
Örneğin:
- Go
- Java
ok, err := e.DeleteRoleForUserInDomain("alice", "admin", "domain1")
boolean ok = e.deleteRoleForUserInDomain("alice", "admin", "domain1");
DeleteRolesForUserInDomain()
DeleteRolesForUserInDomain()
fonksiyonu, bir kullanıcı için bir alan içindeki tüm rolleri kaldırır. Kullanıcının hiç rolü yoksa false
döner (değişiklik yapılmaz).
Örneğin:
- Go
ok, err := e.DeleteRolesForUserInDomain("alice", "domain1")
GetAllUsersByDomain()
GetAllUsersByDomain()
fonksiyonu, verilen domain ile ilişkili tüm kullanıcıları getirir. Eğer modelde domain tanımlı değilse, boş bir string dizisi döndürür.
Örneğin:
- Go
res := e.GetAllUsersByDomain("domain1")
DeleteAllUsersByDomain()
DeleteAllUsersByDomain()
fonksiyonu, verilen domain ile ilişkili tüm kullanıcıları siler. Eğer modelde domain tanımlı değilse, false
döndürür.
Örneğin:
- Go
ok, err := e.DeleteAllUsersByDomain("domain1")
DeleteDomains()
DeleteDomains, ilişkili tüm kullanıcıları ve rolleri siler. Parametre sağlanmazsa tüm alanları siler.
Örneğin:
- Go
ok, err := e.DeleteDomains("domain1", "domain2")
GetAllDomains()
GetAllDomains tüm alanları alır.
Örneğin:
- Go
res, _ := e.GetAllDomains()
name::domain
gibi bir alanı yönetiyorsanız, beklenmeyen bir davranışa yol açabilir. Casbin'de, ::
bir programlama dilindeki for
, if
gibi ayrılmış bir anahtar kelimedir, ::
'yi asla bir alanda kullanmamalıyız.
GetAllRolesByDomain()
GetAllRolesByDomain, alanla ilişkili tüm rolleri alır.
Örneğin:
- Go
res := e.GetAllRolesByDomain("domain1")
Bu yöntem, devralma ilişkisi olan alanlara, yani örtük roller olarak da bilinenlere uygulanmaz.
GetImplicitUsersForResourceByDomain()
GetImplicitUsersForResourceByDomain, kaynak ve alana göre örtük kullanıcı döndürür.
Örneğin:
p, admin, domain1, data1, read
p, admin, domain1, data1, write
p, admin, domain2, data2, read
p, admin, domain2, data2, write
g, alice, admin, domain1
g, bob, admin, domain2
GetImplicitUsersForResourceByDomain("data1", "domain1") şunu döndürecektir: [["alice", "domain1", "data1", "read"],["alice", "domain1", "data1", "write"]], nil
- Go
ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
Yalnızca kullanıcılar döndürülecektir, roller ("g" içindeki 2. argüman) dışlanacaktır.