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

API управления

Примитивный API, который обеспечивает полную поддержку управления политикой Casbin.

Отфильтрованный API

Почти все фильтрованные api имеют одинаковые параметры (fieldIndex int, fieldValues ...string). fieldIndex является индексом, где начинается совпадение, fieldValues обозначает результат значений. Обратите внимание, что пустая строка в значениях полей может быть любое слово.

Например:

p, alice, book, read
p, bob, book, read
p, bob, book, write
p, alice, pen, get
p, bob, pen ,get
e.GetFilteredPolicy(1, "книга") // вернет: [[alice book read] [bob book read] [bob book write]]

e. etFilteredPolicy(1, "book", "read") // вернет: [[alice book read] [bob book read]]

e. etFilteredPolicy(0, "alice", "", "read") // вернет: [[alice book read]]

e.GetFilteredPolicy(0, "alice") // вернет: [[alice book read] [alice pen get]]

Артикул

глобальная переменная e является экземпляром Enforcer.

e, err := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")

Enforce()

Принудительная решит, может ли "субъект" получить доступ к "объекту" с операцией "действие", входные параметры обычны (sub, obj, act).

Например:

ok, err := e.Enforce(request)

EnforceWithMatcher()

EnforceWithMatcher использует пользовательский матч, чтобы решить, может ли "субъект" получить доступ к "объекту" с операцией "действие", входные параметры обычные: (совпадение, под, обе, действие), использовать сравнение модели по умолчанию при совпадении "".

Например:

ok, err := e.EnforceWithMatcher(matcher, request)

EnforceEx()

Принудительная процедура разъясняет вопрос о приведении в исполнение, информируя о соответствующих правилах.

Например:

ok, reason, err := e.EnforceEx(request)

EnforceExWithMatcher()

EnforceExWithMatcher использует пользовательские совпадения и объясняет их выполнение, информируя о соответствующих правилах.

Например:

ok, reason, err := e.EnforceExWithMatcher(matcher, request)

BatchEnforce()

BatchEnforce вводит каждый запрос и возвращает в результате массив bool

Например:

boolArray, err := e.BatchEnforce(requests)

GetAllSubjects()

GetAllSubjects получает список тем, которые отображаются в текущей политике.

Например:

allSubjects := e.GetAllSubjects()

GetAllNamedSubjects()

GetAllNamedSubjects получает список тем, которые отображаются в текущей именованной политике.

Например:

allNamedSubjects := e.GetAllNamedSubjects("p")

GetAllObjects()

GetAllObjects получает список объектов, которые отображаются в текущей политике.

Например:

allObjects := e.GetAllObjects()

GetAllNamedObjects()

GetAllNamedObjects получает список объектов, которые отображаются в текущей политике именования.

Например:

allNamedObjects := e.GetAllNamedObjects("p")

GetAllActions()

GetAllActions получает список действий, которые отображаются в текущей политике.

Например:

allActions := e.GetAllActions()

GetAllNamedActions()

GetAllNamedActions получает список действий, которые отображаются в текущей именованной политике.

Например:

allNamedActions := e.GetAllNamedActions("p")

GetAllRoles()

GetAllRoles получает список ролей, которые отображаются в текущей политике.

Например:

allRoles = e.GetAllRoles()

GetAllNamedRoles()

GetAllNamedRoles получает список ролей, которые отображаются в текущей политике именования.

Например:

allNamedRoles := e.GetAllNamedRoles("g")

GetPolicy()

GetPolicy получает все правила авторизации в политике.

Например:

policy = e.GetPolicy()

GetFilteredPolicy()

GetFilteredPolicy получает все правила авторизации в политике, фильтры полей могут быть указаны.

Например:

filteredPolicy := e.GetFilteredPolicy(0, "alice")

GetNamedPolicy()

GetNamedPolicy получает все правила авторизации в этой политике.

Например:

namedPolicy := e.GetNamedPolicy("p")

GetFilteredNamedPolicy()

GetFilteredNamedPolicy получает все правила авторизации в указанной политике, могут быть заданы фильтры полей.

Например:

filteredNamedPolicy = e.GetFilteredNamedPolicy("p", 0, "bob")

GetGroupingPolicy()

GetGroupingPolicy получает все правила наследования ролей в политике.

Например:

groupingPolicy := e.GetGroupingPolicy()

GetFilteredGroupingPolicy()

GetFilteredGroupingPolicy получает все правила наследования ролей в политике, фильтры полей могут быть указаны.

Например:

filteredGroupingPolicy := e.GetFilteredGroupingPolicy(0, "alice")

GetNamedGroupingPolicy()

GetNamedGroupingPolicy получает все правила наследования ролей в политике.

Например:

namedGroupingPolicy := e.GetNamedGroupingPolicy("g")

GetFilteredNamedGroupingPolicy()

GetFilteredNamedGroupingPolicy получает все правила наследования ролей в политике.

Например:

namedGroupingPolicy := e.GetFilteredNamedGroupingPolicy("g", 0, "alice")

HasPolicy()

HasPolicy определяет, существует ли правило авторизации.

Например:

hasPolicy := e.HasPolicy("data2_admin", "data2", "read")

HasNamedPolicy()

HasNamedPolicy определяет, существует ли указанное правило авторизации.

Например:

hasNamedPolicy := e.HasNamedPolicy("p", "data2_admin", "data2", "read")

AddPolicy()

AddPolicy добавляет правило авторизации к текущей политике. Если правило уже существует, функция возвращает false, а правило не будет добавлено. В противном случае функция возвращает true путем добавления нового правила.

Например:

added := e.AddPolicy('eve', 'data3', 'read')

AddPolicies()

AddPolicies добавляет правила авторизации в текущую политику. Операция является атомарной в природе. Следовательно, если правила авторизации состоят из правил, не соответствующих нынешней политике, функция возвращает false, и в текущую политику не добавлено никаких правил. Если все правила авторизации соответствуют правилам политики, функция возвращает истинное и каждое правило политики добавляется в текущую политику.

Например:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesAdded := e.AddPolicies(rules)

AddPoliciesEx()

AddPoliciesEx adds authorization rules to the current policy. If the rule already exists, the rule will not be added. But unlike AddPolicies, other non-existent rules are added instead of returning false directly

Например:

ok, err := e.AddPoliciesEx([][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

AddNamedPolicy()

AddNamedPolicy добавляет правило авторизации к текущей именованной политике. Если правило уже существует, функция возвращает false, а правило не будет добавлено. В противном случае функция возвращает true путем добавления нового правила.

Например:

added := e.AddNamedPolicy("p", "eve", "data3", "read")

AddNamedPolicies()

AddNamedPolicies добавляет правила авторизации в текущую именованную политику. Операция является атомарной в природе. Следовательно, если правила авторизации состоят из правил, не соответствующих нынешней политике, функция возвращает false, и в текущую политику не добавлено никаких правил. Если все правила авторизации соответствуют правилам политики, функция возвращает истинное и каждое правило политики добавляется в текущую политику.

Например:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesAdded := e.AddNamedPolicies("p", rules)

AddNamedPoliciesEx()

AddNamedPoliciesEx adds authorization rules to the current named policy. If the rule already exists, the rule will not be added. But unlike AddNamedPolicies, other non-existent rules are added instead of returning false directly

Например:

ok, err := e.AddNamedPoliciesEx("p", [][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

SelfAddPoliciesEx()

SelfAddPoliciesEx adds authorization rules to the current named policy with autoNotifyWatcher disabled. If the rule already exists, the rule will not be added. But unlike SelfAddPolicies, other non-existent rules are added instead of returning false directly

Например:

ok, err := e.SelfAddPoliciesEx("p", "p", [][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

RemovePolicy()

RemovePolicy удаляет из текущей политики правило авторизации.

Например:

removed := e.RemovePolicy("alice", "data1", "read")

RemovePolicies()

Удаляет правила авторизации из текущей политики. Операция является атомарной в природе. Следовательно, если правила авторизации состоят из правил, не соответствующих нынешней политике, функция возвращает false, и ни одно правило не удалено из текущей политики. Если все правила авторизации соответствуют правилам политики, функция возвращает истинное и каждое правило политики удалено из текущей политики.

Например:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesRemoved := e.RemovePolicies(rules)

RemoveFilteredPolicy()

RemoveFilteredPolicy удаляет правило авторизации из текущей политики, могут быть определены фильтры полей. RemovePolicy удаляет из текущей политики правило авторизации.

Например:

removed := e.RemoveFilteredPolicy(0, "alice", "data1", "read")

RemoveNamedPolicy()

RemoveNamedPolicy удаляет из текущей политики авторизации.

Например:

removed := e.RemoveNamedPolicy("p", "alice", "data1", "read")

RemoveNamedPolicies()

RemoveNamedPolicies удаляет правила авторизации из текущей названной политики. Операция является атомарной в природе. Следовательно, если правила авторизации состоят из правил, не соответствующих нынешней политике, функция возвращает false, и ни одно правило не удалено из текущей политики. Если все правила авторизации соответствуют правилам политики, функция возвращает истинное и каждое правило политики удалено из текущей политики.

Например:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesRemoved := e.RemoveNamedPolicies("p", rules)

RemoveFilteredNamedPolicy()

RemoveFilteredNamedPolicy удаляет правило авторизации из текущей именованной политики, могут быть заданы фильтры полей.

Например:

removed := e.RemoveFilteredNamedPolicy("p", 0, "alice", "data1", "read")

HasGroupingPolicy()

HasGroupingPolicy определяет, существует ли правило наследования роли.

Например:

has := e.HasGroupingPolicy("alice", "data2_admin")

HasNamedGroupingPolicy()

HasNamedGroupingPolicy определяет, существует ли указанное правило наследования роли.

Например:

has := e.HasNamedGroupingPolicy("g", "alice", "data2_admin")

AddGroupingPolicy()

AddGroupingPolicy добавляет правило наследования ролей в текущую политику. Если правило уже существует, функция возвращает false, а правило не будет добавлено. В противном случае функция возвращает true путем добавления нового правила.

Например:

added := e.AddGroupingPolicy("group1", "data2_admin")

AddGroupingPolicies()

AddGroupingPolicies добавляет правила наследования ролей к текущей политике. Операция является атомарной в природе. Следовательно, если правила авторизации состоят из правил, не соответствующих нынешней политике, функция возвращает false, и в текущую политику не добавлено никаких правил. Если все права авторизации соответствуют правилам политики, функция возвращает истинное и каждое правило политики добавляется в текущую политику.

Например:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesAdded := e.AddGroupingPolicies(rules)

AddGroupingPoliciesEx()

AddGroupingPoliciesEx adds role inheritance rules to the current policy. If the rule already exists, the rule will not be added. But unlike AddGroupingPolicies, other non-existent rules are added instead of returning false directly

Например:

ok, err := e.AddGroupingPoliciesEx([][]string{{"user1", "member"}, {"user2", "member"}})

AddNamedGroupingPolicy()

AddNamedGroupingPolicy добавляет к текущей политике именованное правило наследования роли. Если правило уже существует, функция возвращает false, а правило не будет добавлено. В противном случае функция возвращает true путем добавления нового правила.

Например:

added := e.AddNamedGroupingPolicy("g", "group1", "data2_admin")

AddNamedGroupingPolicies()

AddNamedGroupingPolicies добавляет именованные правила наследования роли в текущую политику. Операция является атомарной в природе. Следовательно, если правила авторизации состоят из правил, не соответствующих нынешней политике, функция возвращает false, и в текущую политику не добавлено никаких правил. Если все правила авторизации соответствуют правилам политики, функция возвращает истинное и каждое правило политики добавляется в текущую политику.

Например:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesAdded := e.AddNamedGroupingPolicies("g", rules)

AddNamedGroupingPoliciesEx()

AddNamedGroupingPoliciesEx adds named role inheritance rules to the current policy. If the rule already exists, the rule will not be added. But unlike AddNamedGroupingPolicies, other non-existent rules are added instead of returning false directly

Например:

ok, err := e.AddNamedGroupingPoliciesEx("g", [][]string{{"user1", "member"}, {"user2", "member"}})

RemoveGroupingPolicy()

RemoveGroupingPolicy удаляет из текущей политики правило наследования роли.

Например:

removed := e.RemoveGroupingPolicy("alice", "data2_admin")

RemoveGroupingPolicies()

RemoveGroupingPolicies удаляет правила наследования ролей из текущей политики. Операция является атомарной в природе. Следовательно, если правила авторизации состоят из правил, не соответствующих нынешней политике, функция возвращает false, и ни одно правило не удалено из текущей политики. Если все правила авторизации соответствуют правилам политики, функция возвращает истинное и каждое правило политики удалено из текущей политики.

Например:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesRemoved := e.RemoveGroupingPolicies(rules)

RemoveFilteredGroupingPolicy()

RemoveFilteredGroupingPolicy удаляет правило наследования ролей из текущей политики, могут быть заданы фильтры полей.

Например:

removed := e.RemoveFilteredGroupingPolicy(0, "alice")

RemoveNamedGroupingPolicy()

RemoveNamedGroupingPolicy удаляет правило наследования ролей из текущей именованной политики.

Например:

removed := e.RemoveNamedGroupingPolicy("g", "alice")

RemoveNamedGroupingPolicies()

RemoveNamedGroupingPolicies удаляет из текущей политики правила наследования роли. Операция является атомарной в природе. Следовательно, если правила авторизации состоят из правил, не соответствующих нынешней политике, функция возвращает false, и ни одно правило не удалено из текущей политики. Если все правила авторизации соответствуют правилам политики, функция возвращает истинное и каждое правило политики удалено из текущей политики.

Например:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesRemoved := e.RemoveNamedGroupingPolicies("g", rules)

RemoveFilteredNamedGroupingPolicy()

RemoveFilteredNamedGroupingPolicy удаляет правило наследования ролей из существующей политики именования, могут быть определены фильтры полей.

Например:

removed := e.RemoveFilteredNamedGroupingPolicy("g", 0, "alice")

UpdatePolicy()

UpdatePolicy обновляет старую политику до новой политики.

Например:

updated, err := e.UpdatePolicy([]string{"eve", "data3", "read"}, []string{"eve", "data3", "write"})

UpdatePolicies()

UpdatePolicies обновляет все старые политики в новой политике.

Например:

updated, err := e.UpdatePolicies([][]string{{"eve", "data3", "read"}, {"jack", "data3", "read"}}, [][]string{{"eve", "data3", "write"}, {"jack", "data3", "write"}})

AddFunction()

Функция добавляет настраиваемую функцию.

For example:

func CustomFunction(key1 string, key2 string) bool {
if key1 == "/alice_data2/myid/using/res_id" && key2 == "/alice_data/:resource" {
return true
} else if key1 == "/alice_data2/myid/using/res_id" && key2 == "/alice_data2/:id/using/:resId" {
return true
} else {
return false
}
}

func CustomFunctionWrapper(args ...interface{}) (interface{}, error) {
key1 := args[0].(string)
key2 := args[1].(string)

return bool(CustomFunction(key1, key2)), nil
}

e.AddFunction("keyMatchCustom", CustomFunctionWrapper)

LoadFilteredPolicy()

LoadFilteredPolicy нагрузок отфильтрованные политики из файла/базы данных.

For example:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()

LoadIncrementalFilteredPolicy добавляет отфильтрованную политику из файлов/базы данных.

For example:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()

UpdateGroupingPolicy обновляет старое правило на newRulein g

For example:

succeed, err : = e.UpdateGroupingPolicy([]string{"data3_admin", "data4_admin"}, []string{"admin", "data4_admin"})

UpdateNamedGroupingPolicy()

UpdateNamedGroupingPolicy обновляет старое правило ptype в раздел newRulein g

For example:

succeed, err : = e.UpdateGroupingPolicy("g1",[]string{"data3_admin", "data4_admin"}, []string{"admin", "data4_admin"})

SetFieldIndex()

SetFieldIndex suport customization of conventional name and position of sub, obj, domain and priority.

[policy_definition]
p = customized_priority, obj, act, eft, subject

For example:

e.SetFieldIndex("p", constant.PriorityIndex, 0)
e.SetFieldIndex("p", constant.SubjectIndex, 4)