Ana içeriğe atla

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.

e, err := NewEnforcer("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:

res := e.GetUsersForRoleInDomain("admin", "domain1")

GetRolesForUserInDomain()

GetRolesForUserInDomain() fonksiyonu, bir kullanıcının bir alan içinde sahip olduğu rolleri alır.

Örneğin:

res := e.GetRolesForUserInDomain("admin", "domain1")

GetPermissionsForUserInDomain()

GetPermissionsForUserInDomain() fonksiyonu, bir kullanıcı veya rol için bir alan içindeki izinleri alır.

Örneğin:

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:

ok, err := 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:

ok, err := 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:

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:

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:

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:

ok, err := e.DeleteDomains("domain1", "domain2")

GetAllDomains()

GetAllDomains tüm alanları alır.

Örneğin:

res, _ := e.GetAllDomains()
not

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:

res := e.GetAllRolesByDomain("domain1")
not

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

ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
not

Yalnızca kullanıcılar döndürülecektir, roller ("g" içindeki 2. argüman) dışlanacaktır.