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

API Role Manager

Интерфейс RoleManager определяет способ хранения и запроса иерархии ролей и связей «пользователь–роль». Вы можете подключить функции сопоставления, чтобы поддерживать подстановочные знаки (например, *) в именах ролей или доменов. Ниже e — это Enforcer, а rm — RoleManager.

API RoleManager​

AddNamedMatchingFunc​

Регистрирует функцию сопоставления для типа политики (например, g). Используется при вычислении связей ролей, чтобы такие шаблоны, как *, соответствовали нескольким именам.

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

AddNamedDomainMatchingFunc​

Регистрирует функцию сопоставления для поля domain в связях ролей (например, в g с тремя аргументами). Включает поддержку подстановочных знаков в именах доменов.

Пример:

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

GetRoleManager​

Возвращает менеджер ролей, используемый для типа групповой политики по умолчанию (например, g).

rm := e.GetRoleManager()

GetNamedRoleManager​

Возвращает менеджер ролей для конкретного типа политики (например, g2).

rm := e.GetNamedRoleManager("g2")

SetRoleManager​

Устанавливает менеджер ролей для типа групповой политики по умолчанию.

e.SetRoleManager(rm)

SetNamedRoleManager​

Устанавливает менеджер ролей для конкретного типа политики (например, g2).

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

Clear​

Очищает все данные о ролях/связях в менеджере ролей.

rm.Clear()

Добавляет связь, согласно которой name1 имеет роль name2 в указанном домене (или с доменом в качестве префикса, в зависимости от модели).

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

Удаляет связь между name1 и name2 в указанном домене.

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

Возвращает информацию о том, имеет ли name1 роль name2 (напрямую или через наследование) в указанном домене.

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

GetRoles​

Возвращает все роли пользователя в указанном домене (включая унаследованные).

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

GetUsers​

Возвращает всех пользователей, которые имеют указанную роль (в домене по умолчанию, если применимо).

rm.GetUsers("g1")

PrintRoles​

Выводит все роли в логгер менеджера ролей (для отладки).

rm.PrintRoles()

SetLogger​

Устанавливает логгер, используемый менеджером ролей (например, для PrintRoles).

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

GetDomains​

Возвращает домены, в которых пользователь имеет хотя бы одну роль. (Только Go; сигнатура может отличаться.)

result, err := rm.GetDomains(name)

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.