Pular para o conteúdo principal

RoleManager API

RoleManager

O RoleManager fornece uma interface para definir operações para gerenciar papéis. A adição de uma função de correspondência ao RoleManager permite o uso de curingas em nomes de papéis e domínios.

AddNamedMatchingFunc()

A função AddNamedMatchingFunc adiciona uma MatchingFunc por Ptype ao RoleManager. A MatchingFunc será usada ao realizar a correspondência de papéis.

    e.AddNamedMatchingFunc("g", "", util.KeyMatch)
_, _ = e.AddGroupingPolicies([][]string{{"*", "admin", "domain1"}})
_, _ = e.GetRoleManager().HasLink("bob", "admin", "domain1") // -> true, nil

Por exemplo:

    e, _ := casbin.NewEnforcer("path/to/model", "path/to/policy")
e.AddNamedMatchingFunc("g", "", util.MatchKey)

AddNamedDomainMatchingFunc()

A função AddNamedDomainMatchingFunc adiciona uma MatchingFunc por Ptype ao RoleManager. A DomainMatchingFunc é semelhante à MatchingFunc listada acima.

Por exemplo:

    e, _ := casbin.NewEnforcer("path/to/model", "path/to/policy")
e.AddNamedDomainMatchingFunc("g", "", util.MatchKey)

GetRoleManager()

A função GetRoleManager obtém o gerenciador de papéis atual para g.

Por exemplo:

    rm := e.GetRoleManager()

GetNamedRoleManager()

A função GetNamedRoleManager obtém o gerenciador de papéis pelo Ptype nomeado.

Por exemplo:

    rm := e.GetNamedRoleManager("g2")

SetRoleManager()

A função SetRoleManager define o gerenciador de papéis atual para g.

Por exemplo:

    e.SetRoleManager(rm)

SetNamedRoleManager()

A função SetNamedRoleManager define o gerenciador de papéis pelo Ptype nomeado.

Por exemplo:

    rm := e.SetNamedRoleManager("g2", rm)

Clear()

A função Clear limpa todos os dados armazenados e reinicia o gerenciador de papéis para seu estado inicial.

Por exemplo:

    rm.Clear()

AddLink adiciona o link de herança entre dois papéis. role: name1 e role: name2. Domain é um prefixo para os papéis (pode ser usado para outros fins).

Por exemplo:

    rm.AddLink("u1", "g1", "domain1")

DeleteLink deleta o link de herança entre dois papéis. role: name1 e role: name2. Domain é um prefixo para os papéis (pode ser usado para outros fins).

Por exemplo:

    rm.DeleteLink("u1", "g1", "domain1")

HasLink determina se um link existe entre dois papéis. role: name1 herda role: name2. Domain é um prefixo para os papéis (pode ser usado para outros fins).

Por exemplo:

    rm.HasLink("u1", "g1", "domain1")

GetRoles()

GetRoles obtém os papéis que um usuário herda. Domain é um prefixo para os papéis (pode ser usado para outros fins).

Por exemplo:

    rm.GetRoles("u1", "domain1")

GetUsers()

GetUsers obtém os usuários que herdam um papel. Domain é um prefixo para os usuários (pode ser usado para outros fins).

Por exemplo:

    rm.GetUsers("g1")

PrintRoles()

PrintRoles imprime todos os papéis no log.

Por exemplo:

    rm.PrintRoles()

SetLogger()

SetLogger define o logger do gerenciador de papéis.

Por exemplo:

    logger := log.DefaultLogger{}
logger.EnableLog(true)
rm.SetLogger(&logger)
_ = rm.PrintRoles()

GetDomains()

GetDomains obtém domínios que um usuário tem

Por exemplo:

    result, err := rm.GetDomains(name)