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

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