Effector
Effect mewakili hasil dari suatu aturan kebijakan, dan Effector adalah antarmuka untuk menangani efek dalam Casbin.
MergeEffects()
Fungsi MergeEffects() digunakan untuk menggabungkan semua hasil kecocokan yang dikumpulkan oleh enforcer menjadi satu keputusan tunggal.
Contohnya:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
Dalam contoh ini:
Effectadalah keputusan akhir yang digabungkan oleh fungsi ini (diinisialisasi sebagaiIndeterminate).explainIndexadalah indeks darieft(AllowatauDeny), dan diinisialisasi sebagai-1.errdigunakan untuk memeriksa apakah efek tersebut didukung.expradalah representasi string dari efek kebijakan.effectsadalah sebuah array efek, yang dapat berupaAllow,Indeterminate, atauDeny.matchesadalah sebuah array yang menunjukkan apakah hasilnya sesuai dengan kebijakan.policyIndexadalah indeks dari kebijakan dalam model.policyLengthadalah panjang dari kebijakan.
Kode di atas mengilustrasikan cara untuk mengirimkan parameter ke fungsi MergeEffects(), dan fungsi tersebut akan memproses efek dan kecocokan berdasarkan expr.
Untuk menggunakan Effector, ikuti langkah-langkah berikut:
- Go
var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
Ide dasar dari MergeEffects() adalah jika expr dapat mencocokkan hasil, menunjukkan bahwa p_eft adalah allow, maka semua efek dapat digabungkan. Jika tidak ada aturan deny yang cocok, maka keputusannya adalah izinkan.
Jika expr tidak cocok dengan kondisi "priority(p_eft) || deny", dan policyIndex lebih pendek dari policyLength-1, maka akan short-circuit beberapa efek di tengah.