RBAC with Domains API
Більш зручний API для RBAC з доменами. Цей API є підмножиною Management API. Користувачі RBAC можуть використовувати цей API для спрощення свого коду.
Довідка
Глобальна змінна e
представляє екземпляр Enforcer.
- 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()
отримує користувачів, які мають роль у домені.
Наприклад:
- 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()
отримує ролі, які має користувач у домені.
Наприклад:
- 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()
отримує дозволи для користувача або ролі у домені.
Наприклад:
- Go
- Java
res := e.GetPermissionsForUserInDomain("alice", "domain1")
List<List<String>> res = e.getPermissionsForUserInDomain("alice", "domain1");
AddRoleForUserInDomain()
Функція AddRoleForUserInDomain()
додає роль для користувача у домені. Вона повертає false
, якщо користувач вже має роль (зміни не внесені).
Наприклад:
- 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()
видаляє роль для користувача у домені. Вона повертає false
, якщо користувач не має ролі (зміни не внесені).
Наприклад:
- Go
- Java
ok, err := e.DeleteRoleForUserInDomain("alice", "admin", "domain1")
boolean ok = e.deleteRoleForUserInDomain("alice", "admin", "domain1");
DeleteRolesForUserInDomain()
Функція DeleteRolesForUserInDomain()
видаляє всі ролі для користувача у домені. Вона повертає false
, якщо користувач не має жодної ролі (зміни не внесені).
Наприклад:
- Go
ok, err := e.DeleteRolesForUserInDomain("alice", "domain1")
GetAllUsersByDomain()
Функція GetAllUsersByDomain()
отримує всіх користувачів, асоційованих з даним доменом. Вона повертає порожній масив рядків, якщо домен не визначений у моделі.
Наприклад:
- Go
res := e.GetAllUsersByDomain("domain1")
DeleteAllUsersByDomain()
Функція DeleteAllUsersByDomain()
видаляє всіх користувачів, асоційованих з даним доменом. Вона повертає false
, якщо домен не визначений у моделі.
Наприклад:
- Go
ok, err := e.DeleteAllUsersByDomain("domain1")
DeleteDomains()
DeleteDomains видалить всіх асоційованих користувачів та ролі. Вона видалить всі домени, якщо параметр не надано.
Наприклад:
- Go
ok, err := e.DeleteDomains("domain1", "domain2")
GetAllDomains()
GetAllDomains отримає всі домени.
Наприклад:
- Go
res, _ := e.GetAllDomains()
Якщо ви обробляєте домен як name::domain
, це може призвести до неочікуваної поведінки. У Casbin, ::
є зарезервованим ключовим словом, так само як for
, if
у мові програмування, ми ніколи не повинні вставляти ::
у домен.
GetAllRolesByDomain()
GetAllRolesByDomain отримає всі ролі, асоційовані з доменом.
Наприклад:
- Go
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
- Go
ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
Будуть повернуті лише користувачі, ролі (2-й аргумент у "g") будуть виключені.