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

RBAC API

Более дружественный API для RBAC. Этот API является подмножеством API Management API. Пользователи RBAC могли бы использовать этот API для упрощения кода.

Артикул

глобальная переменная e является экземпляром Enforcer.

e, err := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")

GetRolesForUser()

GetRolesForUser получает роли, которые имеет пользователь.

Например:

res := e.GetRolesForUser("alice")

GetUsersForRole()

GetUsersForRole получает пользователей, которые имеют роль.

Например:

res := e.GetUsersForRole("data1_admin")

HasRoleForUser()

HasRoleForUser определяет роль пользователя.

Например:

res := e.HasRoleForUser("alice", "data1_admin")

AddRoleForUser()

AddRoleForUser добавляет роль для пользователя. Возвращает false, если пользователь уже имеет роль (aka not affected).

Например:

e.AddRoleForUser("alice", "data2_admin")

AddRolesForUser()

AddRolesForUser добавляет несколько ролей для пользователя. Возвращает false, если пользователь уже имеет одну из этих ролей (aka not affected).

Например:

var roles = []string{"data2_admin", "data1_admin"}
e.AddRolesForUser("alice", roles)

DeleteRoleForUser()

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

Например:

e.DeleteRoleForUser("alice", "data1_admin")

DeleteRolesForUser()

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

Например:

e.DeleteRolesForUser("alice")

DeleteUser()

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

Например:

e.DeleteUser("alice")

DeleteRole()

Удалить роль.

Например:

e.DeleteRole("data2_admin")

DeletePermission()

Разрешение на удаление удаляет разрешение. Возвращает false, если разрешение не существует (aka не затрагивается).

Например:

e.DeletePermission("read")

AddPermissionForUser()

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

Например:

e.AddPermissionForUser("bob", "read")

AddPermissionsForUser()

AddPermissionsForUser добавляет несколько разрешений для пользователя или роли. Возвращает false, если пользователь или роль уже имеют один из прав (aka not affected).

Например:

var permissions = [][]string{{"data1", "read"},{"data2","write"}}
for i := 0; i < len(permissions); i++ {
e.AddPermissionsForUser("alice", permissions[i])
}

DeletePermissionForUser()

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

Например:

e.DeletePermissionForUser("bob", "read")

DeletePermissionsForUser()

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

Например:

e.DeletePermissionsForUser("bob")

GetPermissionsForUser()

GetPermissionsForUser получает разрешения для пользователя или роли.

Например:

e.GetPermissionsForUser("bob")

HasPermissionForUser()

HasPermissionForUser определяет, имеет ли пользователь разрешение.

Например:

e.HasPermissionForUser("alice", []string{"read"})

GetImplicitRolesForUser()

GetImplicitRolesForUser получает неявные роли, которые имеет пользователь. По сравнению с GetRolesForUser(), эта функция извлекает косвенные роли помимо прямых ролей.

For example:
g, alice, role:admin
g, role:admin, role:user

GetRolesForUser("alice") может только получить: ["role:admin"].
Но GetImplicitRolesForUser("alice") получит: ["role:admin", "role:user"].

Например:

e.GetImplicitRolesForUser("alice")

GetImplicitUsersForRole()

GetImplicitUsersForRole получает всех пользователей, наследующих роль. По сравнению с GetUsersForRole(), эта функция получает некосвенных пользователей.

For example:
g, alice, role:admin
g, role:admin, role:user

GetUsersForle("role:user") может только получить: ["role:admin"].
Но GetImplicitUesrsForRole("role:user") получит: ["role:admin", "alice"].

Например:

users := e.GetImplicitUsersForRole("role:user")

GetImplicitPermissionsForUser()

GetImplicitsForUser получает неявные разрешения для пользователя или роли.
По сравнению с GetPermissionsForUser(), эта функция получает разрешения для унаследованных ролей.

Например:
p, admin, data1, read
p, alice, data2, read
g, alice, admin

GetPermissionsForUser("alice") может только получить: [["alice", "data2", "read"]].
Но GetImplicitPermissionsForUser("alice") получит: [["admin", "data1", "read"], ["alice", "data2", "read"]].

Например:

e.GetImplicitPermissionsForUser("alice")

GetNamedImplicitPermissionsForUser()

GetNamedImplicitsForUser получает неявные разрешения для пользователя или роли по названной политике По сравнению с GetImplicitsForUser(), эта функция позволяет вам указать имя политики.

Например: p, admin, data1, read p2, admin, create g, alice, admin

GetImplicitsForUser("alice") только получить: [["admin", "data1", "read"]], политика которого по умолчанию "p"

Но вы можете указать политику как "p2" получить: [["admin", "create"]] GetNamedImplicitPermissionsForUser("p2","alice")

Например:

e.GetNamedImplicitPermissionsForUser("p2","alice")

GetDomainsForUser()

GetDomainsForUser получает все домены, которые есть у пользователя.

Например: p, admin, domain1, data1, read p, admin, domain2, data2, read p, admin, domain2, data2, write g, alice, admin, domain1 g, alice, admin, domain2

GetDomainsForUser("alice") может получить ["domain1", "domain2"]

Например:

result, err := e.GetDomainsForUser("alice")

GetImplicitResourcesForUser()

GetImplicitResourcesForUser возвращает все политики, которые должны быть истинными для пользователя.

Например:

p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write

g, alice, data2_admin

GetImplicitResourcesForUser("alice") вернет [[alice data1 read] [alice data2 read] [alice data2 write]]

resources, err := e.GetImplicitResourcesForUser("alice")