Lewati ke konten utama

Management API

API primitif yang menyediakan dukungan penuh untuk manajemen kebijakan Casbin.

Filtered API

Hampir semua filtered api memiliki parameter yang sama (fieldIndex int, fieldValues ...string). fieldIndex adalah indeks di mana pencocokan dimulai, fieldValues menunjukkan nilai yang seharusnya dimiliki hasil. Perhatikan bahwa string kosong dalam fieldValues bisa berupa kata apa saja.

Contoh:

p, alice, book, read
p, bob, book, read
p, bob, book, write
p, alice, pen, get
p, bob, pen ,get
e.GetFilteredPolicy(1, "book") // will return: [[alice book read] [bob book read] [bob book write]]

e.GetFilteredPolicy(1, "book", "read") // will return: [[alice book read] [bob book read]]

e.GetFilteredPolicy(0, "alice", "", "read") // will return: [[alice book read]]

e.GetFilteredPolicy(0, "alice") // will return: [[alice book read] [alice pen get]]

Referensi

variabel global e adalah instance Enforcer.

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

Enforce()

Enforce menentukan apakah sebuah "subjek" dapat mengakses "objek" dengan operasi "aksi", parameter input biasanya: (sub, obj, act).

Contohnya:

ok, err := e.Enforce(request)

EnforceWithMatcher()

EnforceWithMatcher menggunakan matcher kustom untuk menentukan apakah sebuah "subjek" dapat mengakses "objek" dengan operasi "aksi", parameter input biasanya: (matcher, sub, obj, act), menggunakan model matcher secara default ketika matcher adalah "".

Contohnya:

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

EnforceEx()

EnforceEx menjelaskan penerapan peraturan dengan memberi tahu aturan yang cocok.

Contohnya:

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

EnforceExWithMatcher()

EnforceExWithMatcher menggunakan matcher kustom dan menjelaskan penerapan peraturan dengan memberi tahu aturan yang cocok.

Misalnya:

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

BatchEnforce()

BatchEnforce menegakkan setiap permintaan dan mengembalikan hasil dalam array bool

Misalnya:

boolArray, err := e.BatchEnforce(requests)

GetAllSubjects()

GetAllSubjects mendapatkan daftar subjek yang muncul dalam kebijakan saat ini.

Misalnya:

allSubjects := e.GetAllSubjects()

GetAllNamedSubjects()

GetAllNamedSubjects mendapatkan daftar subjek yang muncul dalam kebijakan bernama saat ini.

Misalnya:

allNamedSubjects := e.GetAllNamedSubjects("p")

GetAllObjects()

GetAllObjects mendapatkan daftar objek yang muncul dalam kebijakan saat ini.

Contohnya:

allObjects := e.GetAllObjects()

GetAllNamedObjects()

GetAllNamedObjects mendapatkan daftar objek yang muncul dalam kebijakan bernama saat ini.

Contohnya:

allNamedObjects := e.GetAllNamedObjects("p")

GetAllActions()

GetAllActions mendapatkan daftar aksi yang muncul dalam kebijakan saat ini.

Contohnya:

allActions := e.GetAllActions()

GetAllNamedActions()

GetAllNamedActions mendapatkan daftar aksi yang muncul dalam kebijakan bernama saat ini.

Contohnya:

allNamedActions := e.GetAllNamedActions("p")

GetAllRoles()

GetAllRoles mendapatkan daftar peran yang muncul dalam kebijakan saat ini.

Contohnya:

allRoles = e.GetAllRoles()

GetAllNamedRoles()

GetAllNamedRoles mendapatkan daftar peran yang muncul dalam kebijakan bernama saat ini.

Contohnya:

allNamedRoles := e.GetAllNamedRoles("g")

GetPolicy()

GetPolicy mendapatkan semua aturan otorisasi dalam kebijakan.

Contohnya:

policy = e.GetPolicy()

GetFilteredPolicy()

GetFilteredPolicy mengambil semua aturan otorisasi dalam kebijakan, filter bidang dapat ditentukan.

Contohnya:

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

GetNamedPolicy()

GetNamedPolicy mengambil semua aturan otorisasi dalam kebijakan bernama.

Contohnya:

namedPolicy := e.GetNamedPolicy("p")

GetFilteredNamedPolicy()

GetFilteredNamedPolicy mengambil semua aturan otorisasi dalam kebijakan bernama, filter bidang dapat ditentukan.

Contohnya:

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

GetGroupingPolicy()

GetGroupingPolicy mengambil semua aturan warisan peran dalam kebijakan.

Contohnya:

groupingPolicy := e.GetGroupingPolicy()

GetFilteredGroupingPolicy()

GetFilteredGroupingPolicy mengambil semua aturan warisan peran dalam kebijakan, filter bidang dapat ditentukan.

Contohnya:

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

GetNamedGroupingPolicy()

GetNamedGroupingPolicy mengambil semua aturan warisan peran dalam kebijakan.

Contohnya:

namedGroupingPolicy := e.GetNamedGroupingPolicy("g")

GetFilteredNamedGroupingPolicy()

GetFilteredNamedGroupingPolicy mendapatkan semua aturan warisan peran dalam kebijakan.

Sebagai contoh:

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

HasPolicy()

HasPolicy menentukan apakah suatu aturan otorisasi ada.

Sebagai contoh:

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

HasNamedPolicy()

HasNamedPolicy menentukan apakah suatu aturan otorisasi bernama ada.

Sebagai contoh:

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

AddPolicy()

AddPolicy menambahkan aturan otorisasi ke kebijakan saat ini. Jika aturan sudah ada, fungsi mengembalikan false dan aturan tersebut tidak akan ditambahkan. Jika tidak, fungsi mengembalikan true dengan menambahkan aturan baru.

Misalnya:

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

AddPolicies()

AddPolicies menambahkan aturan otorisasi ke kebijakan saat ini. Operasi ini bersifat atomik. Oleh karena itu, jika aturan otorisasi terdiri dari aturan yang tidak konsisten dengan kebijakan saat ini, fungsi mengembalikan false dan tidak ada aturan kebijakan yang ditambahkan ke kebijakan saat ini. Jika semua aturan otorisasi konsisten dengan aturan kebijakan, fungsi mengembalikan true dan setiap aturan kebijakan ditambahkan ke kebijakan saat ini.

Misalnya:

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

areRulesAdded := e.AddPolicies(rules)

AddPoliciesEx()

AddPoliciesEx menambahkan aturan otorisasi ke kebijakan saat ini. Jika aturan tersebut sudah ada, aturan tersebut tidak akan ditambahkan. Tetapi tidak seperti AddPolicies, aturan lain yang tidak ada ditambahkan sebagai gantinya daripada langsung mengembalikan false.

Sebagai contoh:

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

AddNamedPolicy()

AddNamedPolicy menambahkan aturan otorisasi ke kebijakan bernama saat ini. Jika aturan tersebut sudah ada, fungsi ini mengembalikan false dan aturan tersebut tidak akan ditambahkan. Jika tidak, fungsi ini mengembalikan true dengan menambahkan aturan baru.

Sebagai contoh:

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

AddNamedPolicies()

AddNamedPolicies menambahkan aturan otorisasi ke kebijakan bernama saat ini. Operasi ini bersifat atomik. Oleh karena itu, jika aturan otorisasi terdiri dari aturan yang tidak konsisten dengan kebijakan saat ini, fungsi tersebut mengembalikan false dan tidak ada aturan kebijakan yang ditambahkan ke kebijakan saat ini. Jika semua aturan otorisasi konsisten dengan aturan kebijakan, fungsi tersebut mengembalikan true dan setiap aturan kebijakan ditambahkan ke kebijakan saat ini.

Contohnya:

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 menambahkan aturan otorisasi ke kebijakan bernama saat ini. Jika aturan sudah ada, aturan tersebut tidak akan ditambahkan. Namun tidak seperti AddNamedPolicies, aturan lain yang tidak ada ditambahkan alih-alih mengembalikan false secara langsung.

Contohnya:

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

SelfAddPoliciesEx()

SelfAddPoliciesEx menambahkan aturan otorisasi ke kebijakan bernama saat ini dengan autoNotifyWatcher dinonaktifkan. Jika aturan tersebut sudah ada, aturan tersebut tidak akan ditambahkan. Tetapi tidak seperti SelfAddPolicies, aturan lain yang tidak ada ditambahkan alih-alih langsung mengembalikan false

Contohnya:

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

RemovePolicy()

RemovePolicy menghapus aturan otorisasi dari kebijakan saat ini.

Contohnya:

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

RemovePolicies()

RemovePolicies menghapus aturan otorisasi dari kebijakan saat ini. Operasi ini bersifat atomik. Oleh karena itu, jika aturan otorisasi terdiri dari aturan yang tidak konsisten dengan kebijakan saat ini, fungsi tersebut mengembalikan nilai false dan tidak ada aturan kebijakan yang dihapus dari kebijakan saat ini. Jika semua aturan otorisasi konsisten dengan aturan kebijakan, fungsi tersebut mengembalikan nilai true dan setiap aturan kebijakan dihapus dari kebijakan saat ini.

Sebagai contoh:

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

areRulesRemoved := e.RemovePolicies(rules)

RemoveFilteredPolicy()

RemoveFilteredPolicy menghapus aturan otorisasi dari kebijakan saat ini, filter bidang dapat ditentukan. RemovePolicy menghapus aturan otorisasi dari kebijakan saat ini.

Sebagai contoh:

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

RemoveNamedPolicy()

RemoveNamedPolicy menghapus aturan otorisasi dari kebijakan bernama saat ini.

Misalnya:

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

RemoveNamedPolicies()

HapusNamedPolicies menghapus aturan otorisasi dari kebijakan bernama saat ini. Operasi ini bersifat atomik. Oleh karena itu, jika aturan otorisasi terdiri dari aturan yang tidak konsisten dengan kebijakan saat ini, fungsi tersebut mengembalikan false dan tidak ada aturan kebijakan yang dihapus dari kebijakan saat ini. Jika semua aturan otorisasi konsisten dengan aturan kebijakan, fungsi tersebut mengembalikan true dan setiap aturan kebijakan dihapus dari kebijakan saat ini.

Misalnya:

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

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

RemoveFilteredNamedPolicy()

HapusFilteredNamedPolicy menghapus aturan otorisasi dari kebijakan bernama saat ini, filter bidang dapat ditentukan.

Misalnya:

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

HasGroupingPolicy()

HasGroupingPolicy menentukan apakah ada aturan pewarisan peran.

Contohnya:

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

HasNamedGroupingPolicy()

HasNamedGroupingPolicy menentukan apakah ada aturan pewarisan peran bernama.

Contohnya:

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

AddGroupingPolicy()

AddGroupingPolicy menambahkan aturan pewarisan peran ke kebijakan saat ini. Jika aturan sudah ada, fungsi ini mengembalikan false dan aturan tidak akan ditambahkan. Jika tidak, fungsi ini mengembalikan true dengan menambahkan aturan baru.

Contohnya:

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

AddGroupingPolicies()

AddGroupingPolicies menambahkan aturan pewarisan peran ke kebijakan saat ini. Operasi ini bersifat atomik. Oleh karena itu, jika aturan otorisasi terdiri dari aturan yang tidak konsisten dengan kebijakan saat ini, fungsi tersebut mengembalikan false dan tidak ada aturan kebijakan yang ditambahkan ke kebijakan saat ini. Jika semua aturan otorisasi konsisten dengan aturan kebijakan, fungsi tersebut mengembalikan true dan setiap aturan kebijakan ditambahkan ke kebijakan saat ini.

Contohnya:

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

areRulesAdded := e.AddGroupingPolicies(rules)

AddGroupingPoliciesEx()

AddGroupingPoliciesEx menambahkan aturan pewarisan peran ke kebijakan saat ini. Jika aturan tersebut sudah ada, aturan tersebut tidak akan ditambahkan. Tapi tidak seperti AddGroupingPolicies, aturan lain yang tidak ada ditambahkan alih-alih langsung mengembalikan false

Misalnya:

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

AddNamedGroupingPolicy()

AddNamedGroupingPolicy menambahkan aturan pewarisan peran bernama ke kebijakan saat ini. Jika aturan sudah ada, fungsi ini mengembalikan false dan aturan tidak akan ditambahkan. Jika tidak, fungsi ini mengembalikan true dengan menambahkan aturan baru.

Misalnya:

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

AddNamedGroupingPolicies()

AddNamedGroupingPolicies menambahkan aturan pewarisan peran bernama ke kebijakan saat ini. Operasi ini bersifat atomik. Oleh karena itu, jika aturan otorisasi terdiri dari aturan yang tidak konsisten dengan kebijakan saat ini, fungsi mengembalikan false dan tidak ada aturan kebijakan yang ditambahkan ke kebijakan saat ini. Jika semua aturan otorisasi konsisten dengan aturan kebijakan, fungsi mengembalikan true dan setiap aturan kebijakan ditambahkan ke kebijakan saat ini.

Contohnya:

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

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

AddNamedGroupingPoliciesEx()

AddNamedGroupingPoliciesEx menambahkan aturan warisan peran bernama ke kebijakan saat ini. Jika aturan sudah ada, aturan tersebut tidak akan ditambahkan. Tapi tidak seperti AddNamedGroupingPolicies, aturan lain yang tidak ada ditambahkan alih-alih mengembalikan false secara langsung.

Contohnya:

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

RemoveGroupingPolicy()

RemoveGroupingPolicy menghapus aturan warisan peran dari kebijakan saat ini.

Misalnya:

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

RemoveGroupingPolicies()

RemoveGroupingPolicies menghapus aturan pewarisan peran dari kebijakan saat ini. Operasi ini bersifat atomik. Oleh karena itu, jika aturan otorisasi terdiri dari aturan yang tidak konsisten dengan kebijakan saat ini, fungsi tersebut mengembalikan false dan tidak ada aturan kebijakan yang dihapus dari kebijakan saat ini. Jika semua aturan otorisasi konsisten dengan aturan kebijakan, fungsi tersebut mengembalikan true dan setiap aturan kebijakan dihapus dari kebijakan saat ini.

Misalnya:

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

areRulesRemoved := e.RemoveGroupingPolicies(rules)

RemoveFilteredGroupingPolicy()

RemoveFilteredGroupingPolicy menghapus aturan pewarisan peran dari kebijakan saat ini, filter bidang dapat ditentukan.

Misalnya:

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

RemoveNamedGroupingPolicy()

HapusNamedGroupingPolicy menghapus aturan warisan peran dari kebijakan bernama saat ini.

Contohnya:

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

RemoveNamedGroupingPolicies()

HapusNamedGroupingPolicies menghapus aturan warisan peran bernama dari kebijakan saat ini. Operasi ini bersifat atomik. Oleh karena itu, jika aturan otorisasi terdiri dari aturan yang tidak konsisten dengan kebijakan saat ini, fungsi tersebut mengembalikan false dan tidak ada aturan kebijakan yang dihapus dari kebijakan saat ini. Jika semua aturan otorisasi konsisten dengan aturan kebijakan, fungsi tersebut mengembalikan true dan setiap aturan kebijakan dihapus dari kebijakan saat ini.

Contohnya:

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

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

RemoveFilteredNamedGroupingPolicy()

RemoveFilteredNamedGroupingPolicy menghapus aturan warisan peran dari kebijakan bernama saat ini, filter bidang dapat ditentukan.

Contohnya:

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

UpdatePolicy()

UpdatePolicy memperbarui kebijakan lama menjadi kebijakan baru.

Contohnya:

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

UpdatePolicies()

UpdatePolicies memperbarui semua kebijakan lama menjadi kebijakan baru.

Contohnya:

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

AddFunction()

AddFunction menambahkan fungsi khusus.

Misalnya:

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 memuat kebijakan yang difilter dari file/database.

Misalnya:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()

LoadIncrementalFilteredPolicy menambahkan kebijakan yang difilter dari file/database.

Misalnya:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()

UpdateGroupingPolicy memperbarui oldRule menjadi newRule di bagian g

Misalnya:

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

UpdateNamedGroupingPolicy()

UpdateNamedGroupingPolicy memperbarui aturan lama bernama ptype ke aturan baru di bagian g

Contohnya:

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

SetFieldIndex()

SetFieldIndex mendukung penyesuaian nama dan posisi konvensional dari sub, obj, domain, dan priority.

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

Contohnya:

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