Перейти до основного контенту

RBAC with Domains API

Більш зручний API для RBAC з доменами. Цей API є підмножиною Management API. Користувачі RBAC можуть використовувати цей API для спрощення свого коду.

Довідка

Глобальна змінна e представляє екземпляр Enforcer.

e, err := NewEnforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv")

GetUsersForRoleInDomain()

Функція GetUsersForRoleInDomain() отримує користувачів, які мають роль у домені.

Наприклад:

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

GetRolesForUserInDomain()

Функція GetRolesForUserInDomain() отримує ролі, які має користувач у домені.

Наприклад:

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

GetPermissionsForUserInDomain()

Функція GetPermissionsForUserInDomain() отримує дозволи для користувача або ролі у домені.

Наприклад:

res := e.GetPermissionsForUserInDomain("alice", "domain1")

AddRoleForUserInDomain()

Функція AddRoleForUserInDomain() додає роль для користувача у домені. Вона повертає false, якщо користувач вже має роль (зміни не внесені).

Наприклад:

ok, err := e.AddRoleForUserInDomain("alice", "admin", "domain1")

DeleteRoleForUserInDomain()

Функція DeleteRoleForUserInDomain() видаляє роль для користувача у домені. Вона повертає false, якщо користувач не має ролі (зміни не внесені).

Наприклад:

ok, err := e.DeleteRoleForUserInDomain("alice", "admin", "domain1")

DeleteRolesForUserInDomain()

Функція DeleteRolesForUserInDomain() видаляє всі ролі для користувача у домені. Вона повертає false, якщо користувач не має жодної ролі (зміни не внесені).

Наприклад:

ok, err := e.DeleteRolesForUserInDomain("alice", "domain1")

GetAllUsersByDomain()

Функція GetAllUsersByDomain() отримує всіх користувачів, асоційованих з даним доменом. Вона повертає порожній масив рядків, якщо домен не визначений у моделі.

Наприклад:

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain()

Функція DeleteAllUsersByDomain() видаляє всіх користувачів, асоційованих з даним доменом. Вона повертає false, якщо домен не визначений у моделі.

Наприклад:

ok, err := e.DeleteAllUsersByDomain("domain1")

DeleteDomains()

DeleteDomains видалить всіх асоційованих користувачів та ролі. Вона видалить всі домени, якщо параметр не надано.

Наприклад:

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

GetAllDomains()

GetAllDomains отримає всі домени.

Наприклад:

res, _ := e.GetAllDomains()
примітка

Якщо ви обробляєте домен як name::domain, це може призвести до неочікуваної поведінки. У Casbin, :: є зарезервованим ключовим словом, так само як for, if у мові програмування, ми ніколи не повинні вставляти :: у домен.

GetAllRolesByDomain()

GetAllRolesByDomain отримає всі ролі, асоційовані з доменом.

Наприклад:

res := e.GetAllRolesByDomain("domain1")
примітка

Цей метод не застосовується до доменів, які мають відносини спадкування, також відомі як неявні ролі.

GetImplicitUsersForResourceByDomain()

GetImplicitUsersForResourceByDomain повертає неявних користувачів на основі ресурсу та домену.

Наприклад:

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") поверне ["alice", "domain1", "data1", "read"],["alice", "domain1", "data1", "write"]], nil

ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
примітка

Будуть повернуті лише користувачі, ролі (2-й аргумент у "g") будуть виключені.