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:
Effect
adalah keputusan akhir yang digabungkan oleh fungsi ini (diinisialisasi sebagaiIndeterminate
).explainIndex
adalah indeks darieft
(Allow
atauDeny
), dan diinisialisasi sebagai-1
.err
digunakan untuk memeriksa apakah efek tersebut didukung.expr
adalah representasi string dari efek kebijakan.effects
adalah sebuah array efek, yang dapat berupaAllow
,Indeterminate
, atauDeny
.matches
adalah sebuah array yang menunjukkan apakah hasilnya sesuai dengan kebijakan.policyIndex
adalah indeks dari kebijakan dalam model.policyLength
adalah 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.