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

RBAC с доменным API

Более дружественный API для RBAC с доменами. Этот API является подмножеством 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, если пользователь уже имеет роль (aka not affected).

Например:

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

DeleteRoleForUserInDomain()

DeleteRoleForUserInDomain удаляет роль пользователя внутри домена. Возвращает false, если у пользователя нет роли (aka не затрагивается).

Например:

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

DeleteRolesForUserInDomain()

DeleteRolesForUserInDomain удаляет все роли пользователя внутри домена. Возвращает false, если пользователь не имеет никаких ролей (aka не затрагивается).

Например:

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

GetAllUsersByDomain()

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

Например:

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain()

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

Например:

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

DeleteDomains()

DeleteDomains удалит всех связанных пользователей и ролей. Если параметр не предоставлен, то все домены будут удалены.

Например:

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

GetAllDomains()

GetAllDomains получит все домены.

Например:

res, _ := e.GetAllDomains()

::note

Если вы обрабатываете домен типа name::domain, это может привести к неожиданному поведению. В Касбине, :: - это обратное ключевое слово, как и для, если на языке программирования, мы никогда не ставим :: в домен.

:::

GetImplicitUsersForResourceByDomain()

GetImplicitUsersForResourceByDomain return implicit user based on resource and domain.

For example:

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") will return [["alice", "domain1", "data1", "read"],["alice", "domain1", "data1", "write"]], nil

ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
note

Only users will be returned, roles (2nd arg in "g") will be excluded.