Pular para o conteúdo principal

RBAC with Domains API

Uma API mais amigável para usuários para RBAC com domínios. Esta API é um subconjunto da API de Gerenciamento. Usuários RBAC podem usar esta API para simplificar seu código.

Referência

A variável global e representa a instância do Enforcer.

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

GetUsersForRoleInDomain()

A função GetUsersForRoleInDomain() recupera os usuários que têm uma função dentro de um domínio.

Por exemplo:

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

GetRolesForUserInDomain()

A função GetRolesForUserInDomain() recupera as funções que um usuário tem dentro de um domínio.

Por exemplo:

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

GetPermissionsForUserInDomain()

A função GetPermissionsForUserInDomain() recupera as permissões para um usuário ou função dentro de um domínio.

Por exemplo:

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

AddRoleForUserInDomain()

A função AddRoleForUserInDomain() adiciona uma função para um usuário dentro de um domínio. Ela retorna false se o usuário já tem a função (nenhuma alteração feita).

Por exemplo:

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

DeleteRoleForUserInDomain()

A função DeleteRoleForUserInDomain() remove uma função para um usuário dentro de um domínio. Ela retorna false se o usuário não tem a função (nenhuma alteração feita).

Por exemplo:

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

DeleteRolesForUserInDomain()

A função DeleteRolesForUserInDomain() remove todas as funções para um usuário dentro de um domínio. Ela retorna false se o usuário não tem nenhuma função (nenhuma alteração feita).

Por exemplo:

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

GetAllUsersByDomain()

A função GetAllUsersByDomain() recupera todos os usuários associados com o domínio dado. Ela retorna um array de strings vazio se nenhum domínio é definido no modelo.

Por exemplo:

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain()

A função DeleteAllUsersByDomain() deleta todos os usuários associados com o domínio dado. Ela retorna false se nenhum domínio é definido no modelo.

Por exemplo:

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

DeleteDomains()

DeleteDomains deletaria todos os usuários e funções associados. Ela deletaria todos os domínios se o parâmetro não for fornecido.

Por exemplo:

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

GetAllDomains()

GetAllDomains obteria todos os domínios.

Por exemplo:

res, _ := e.GetAllDomains()
nota

Se você está lidando com um domínio como name::domain, isso pode levar a um comportamento inesperado. No Casbin, :: é uma palavra reservada, assim como for, if em uma linguagem de programação, nunca devemos colocar :: em um domínio.

GetAllRolesByDomain()

GetAllRolesByDomain obteria todas as funções associadas com o domínio.

Por exemplo:

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

Este método não se aplica a domínios que têm uma relação de herança, também conhecidos como funções implícitas.

GetImplicitUsersForResourceByDomain()

GetImplicitUsersForResourceByDomain retorna usuário implícito baseado no recurso e domínio.

Por exemplo:

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

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

Apenas usuários serão retornados, funções (2º arg em "g") serão excluídas.