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")
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
Возвращает всех пользователей, которые имеют указанную роль в указанном домене.
res := e.GetUsersForRoleInDomain("admin", "domain1")
const res = e.getUsersForRoleInDomain("admin", "domain1")
res = e.get_users_for_role_in_domain("admin", "domain1")
GetRolesForUserInDomain
Возвращает все роли, назначенные пользователю в указанном домене.
res := e.GetRolesForUserInDomain("alice", "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
Возвращает все разрешения (правила политики) для пользователя или роли в указанном домене.
res := e.GetPermissionsForUserInDomain("alice", "domain1")
List<List<String>> res = e.getPermissionsForUserInDomain("alice", "domain1");
AddRoleForUserInDomain
Назначает роль пользователю в домене. Возвращает false, если такое назначение уже существует.
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
Удаляет роль у пользователя в домене. Возвращает false, если такая связь не существовала.
ok, err := e.DeleteRoleForUserInDomain("alice", "admin", "domain1")
boolean ok = 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.