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

API RBAC с доменами

Удобный API для RBAC with domains: операции с пользователями–ролями и разрешениями, ограниченные доменом. Он является подмножеством Management API. Ниже e — это экземпляр Enforcer, загруженный с моделью, учитывающей домены.

Справочник​

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

GetUsersForRoleInDomain​

Возвращает всех пользователей, которые имеют указанную роль в указанном домене.

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

GetRolesForUserInDomain​

Возвращает все роли, назначенные пользователю в указанном домене.

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

GetPermissionsForUserInDomain​

Возвращает все разрешения (правила политики) для пользователя или роли в указанном домене.

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

AddRoleForUserInDomain​

Назначает роль пользователю в домене. Возвращает false, если такое назначение уже существует.

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

DeleteRoleForUserInDomain​

Удаляет роль у пользователя в домене. Возвращает false, если такая связь не существовала.

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

DeleteRolesForUserInDomain​

Удаляет все роли у пользователя в домене. Возвращает false, если у пользователя не было ролей в этом домене.

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

GetAllUsersByDomain​

Возвращает всех пользователей, которые имеют хотя бы одну роль в указанном домене. Пустой список, если модель не использует домены.

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain​

Удаляет все назначения «пользователь–роль» в указанном домене. Возвращает false, если модель не использует домены.

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

DeleteDomains​

Удаляет всех пользователей и роли для указанных доменов. Без аргументов очищает все домены.

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

GetAllDomains​

Возвращает все домены, присутствующие в политике.

res, _ := e.GetAllDomains()
предупреждение

Не используйте :: в именах доменов; этот символ зарезервирован в синтаксисе выражений Casbin.

GetAllRolesByDomain​

Возвращает все роли, присутствующие в указанном домене.

res := e.GetAllRolesByDomain("domain1")
примечание

Не включает роли, унаследованные через иерархию (неявные роли); возвращаются только прямые назначения в домене.

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") вернет разрешения для пользователей, имеющих доступ к data1 в domain1 (например, alice через роль admin).

ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
примечание

Возвращаются только результаты на уровне пользователей; имена ролей (второй элемент в правилах g) не перечисляются.

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.