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
await e.addNamedMatchingFunc('g', Util.keyMatchFunc);
await e.addGroupingPolicies([['*', 'admin', 'domain1']]);
await e.getRoleManager().hasLink('bob', 'admin', 'domain1');
AddNamedDomainMatchingFunc
Регистрирует функцию сопоставления для поля domain в связях ролей (например, в g с тремя аргументами). Включает поддержку подстановочных знаков в именах доменов.
Пример:
e, _ := casbin.NewEnforcer("path/to/model", "path/to/policy")
e.AddNamedDomainMatchingFunc("g", "", util.MatchKey)
const e = await newEnforcer('path/to/model', 'path/to/policy');
await e.addNamedDomainMatchingFunc('g', Util.keyMatchFunc);
GetRoleManager
Возвращает менеджер ролей, используемый для типа групповой политики по умолчанию (например, g).
rm := e.GetRoleManager()
const rm = await e.getRoleManager();
rm = e.get_role_manager()
GetNamedRoleManager
Возвращает менеджер ролей для конкретного типа политики (например, g2).
rm := e.GetNamedRoleManager("g2")
const rm = await e.getNamedRoleManager("g2");
rm = e.get_named_role_manager("g2")
SetRoleManager
Устанавливает менеджер ролей для типа групповой политики п о умолчанию.
e.SetRoleManager(rm)
e.setRoleManager(rm);
rm = e.set_role_manager(rm)
SetNamedRoleManager
Устанавливает менеджер ролей для конкретного типа политики (например, g2).
rm := e.SetNamedRoleManager("g2", rm)
rm = e.set_role_manager("g2", rm)
Clear
Очищает все данные о ролях/связях в менеджере ролей.
rm.Clear()
await rm.clear();
rm.clear()
AddLink
Добавляет связь, согласно которой name1 имеет роль name2 в указанном домене (или с доменом в качестве префикса, в зависимо сти от модели).
rm.AddLink("u1", "g1", "domain1")
await rm.addLink('u1', 'g1', 'domain1');
rm.add_link("u1", "g1", "domain1")
DeleteLink
Удаляет связь между name1 и name2 в указанном домене.
rm.DeleteLink("u1", "g1", "domain1")
await rm.deleteLink('u1', 'g1', 'domain1');
rm.delete_link("u1", "g1", "domain1")
HasLink
Возвращает информацию о том, имеет ли name1 роль name2 (напрямую или через наследование) в указанном домене.
rm.HasLink("u1", "g1", "domain1")
await rm.hasLink('u1', 'g1', 'domain1');
rm.has_link("u1", "g1", "domain1")
GetRoles
Возвращает все роли пользователя в указанном домене (включая унаследованные).
rm.GetRoles("u1", "domain1")
await rm.getRoles('u1', 'domain1');
rm.get_roles("u1", "domain")
GetUsers
Возвращ ает всех пользователей, которые имеют указанную роль (в домене по умолчанию, если применимо).
rm.GetUsers("g1")
await rm.getUsers('g1');
rm.get_users("g1")
PrintRoles
Выводит все роли в логгер менеджера ролей (для отладки).
rm.PrintRoles()
await rm.printRoles();
rm.print_roles()
SetLogger
Устанавливает логгер, используемый менеджером ролей (например, для PrintRoles).
logger := log.DefaultLogger{}
logger.EnableLog(true)
rm.SetLogger(&logger)
_ = rm.PrintRoles()