Ir al contenido principal

RBAC with Domains API

Una API más amigable para el usuario para RBAC con dominios. Esta API es un subconjunto de la API de Gestión. Los usuarios de RBAC pueden usar esta API para simplificar su código.

Referencia

La variable global e representa la instancia de Enforcer.

e, err := NewEnforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv")

GetUsersForRoleInDomain()

La función GetUsersForRoleInDomain() recupera los usuarios que tienen un rol dentro de un dominio.

Por ejemplo:

res := e.GetUsersForRoleInDomain("admin", "domain1")

GetRolesForUserInDomain()

La función GetRolesForUserInDomain() recupera los roles que un usuario tiene dentro de un dominio.

Por ejemplo:

res := e.GetRolesForUserInDomain("admin", "domain1")

GetPermissionsForUserInDomain()

La función GetPermissionsForUserInDomain() recupera los permisos para un usuario o rol dentro de un dominio.

Por ejemplo:

res := e.GetPermissionsForUserInDomain("alice", "domain1")

AddRoleForUserInDomain()

La función AddRoleForUserInDomain() añade un rol para un usuario dentro de un dominio. Devuelve false si el usuario ya tiene el rol (no se realizaron cambios).

Por ejemplo:

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

DeleteRoleForUserInDomain()

La función DeleteRoleForUserInDomain() elimina un rol para un usuario dentro de un dominio. Devuelve false si el usuario no tiene el rol (no se realizaron cambios).

Por ejemplo:

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

DeleteRolesForUserInDomain()

La función DeleteRolesForUserInDomain() elimina todos los roles para un usuario dentro de un dominio. Devuelve false si el usuario no tiene ningún rol (no se realizaron cambios).

Por ejemplo:

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

GetAllUsersByDomain()

La función GetAllUsersByDomain() recupera todos los usuarios asociados con el dominio dado. Devuelve un arreglo de cadenas vacío si no se define ningún dominio en el modelo.

Por ejemplo:

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain()

La función DeleteAllUsersByDomain() elimina todos los usuarios asociados con el dominio dado. Devuelve false si no se define ningún dominio en el modelo.

Por ejemplo:

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

DeleteDomains()

DeleteDomains eliminaría todos los usuarios y roles asociados. Eliminaría todos los dominios si no se proporciona un parámetro.

Por ejemplo:

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

GetAllDomains()

GetAllDomains obtendría todos los dominios.

Por ejemplo:

res, _ := e.GetAllDomains()
nota

Si estás manejando un dominio como name::domain, puede llevar a un comportamiento inesperado. En Casbin, :: es una palabra clave reservada, al igual que for, if en un lenguaje de programación, nunca deberíamos poner :: en un dominio.

GetAllRolesByDomain()

GetAllRolesByDomain obtendría todos los roles asociados con el dominio.

Por ejemplo:

res := e.GetAllRolesByDomain("domain1")
nota

Este método no se aplica a dominios que tienen una relación de herencia, también conocidos como roles implícitos.

GetImplicitUsersForResourceByDomain()

GetImplicitUsersForResourceByDomain devuelve usuarios implícitos basados en el recurso y el dominio.

Por ejemplo:

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

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

Solo se devolverán usuarios, los roles (2º arg en "g") serán excluidos.