Skip to main content

RoleManager API

RoleManager

RoleManager provides interface to define the operations for managing roles. Adding matching function to rolemanager allows using wildcards in role name and domain.

AddNamedMatchingFunc()

AddNamedMatchingFunc add MatchingFunc by ptype RoleManager. MatchingFunc will work when operating role matching.

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

For example:

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

AddNamedDomainMatchingFunc()

AddNamedDomainMatchingFunc add MatchingFunc by ptype to RoleManager. DomainMatchingFunc is similar to MatchingFunc listed above.

For example:

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

GetRoleManager()

GetRoleManager gets the current role manager for g.

For example:

    rm := e.GetRoleManager()

Clear()

Clear clears all stored data and resets the role manager to the initial state.

For example:

    rm.Clear()

AddLink adds the inheritance link between two roles. role: name1 and role: name2. Domain is a prefix to the roles (can be used for other purposes).

For example:

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

DeleteLink deletes the inheritance link between two roles. role: name1 and role: name2. Domain is a prefix to the roles (can be used for other purposes).

For example:

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

HasLink determines whether a link exists between two roles. role: name1 inherits role: name2. Domain is a prefix to the roles (can be used for other purposes).

For example:

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

GetRoles()

GetRoles gets the roles that a user inherits. Domain is a prefix to the roles (can be used for other purposes).

For example:

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

GetUsers()

GetUsers gets the users that inherits a role. Domain is a prefix to the users (can be used for other purposes).

For example:

    rm.GetUsers("g1")

PrintRoles()

PrintRoles prints all the roles to log.

For example:

    rm.PrintRoles()

SetLogger()

SetLogger sets role manager's logger.

For example:

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

GetDomains()

GetDomains gets domains that a user has

For example:

    result, err := rm.GetDomains(name)