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") будут исключены.