JSON Adapter is the JSON (JavaScript Object Notation) adapter for Casbin. With this library, Casbin can load policy from JSON string or save policy to it.
go get github.com/casbin/json-adapter/v2 package main import ( "github.com/casbin/casbin/v2" "github.com/casbin/json-adapter/v2" ) func main() { // Initialize a JSON adapter and use it in a Casbin enforcer: b := []byte{} // b stores Casbin policy in JSON bytes. a := jsonadapter.NewAdapter(&b) // Use b as the data source. e, _ := casbin.NewEnforcer("examples/rbac_model.conf", a) // Load the policy from JSON bytes b. e.LoadPolicy() // Check the permission. e.Enforce("alice", "data1", "read") // Modify the policy. // e.AddPolicy(...) // e.RemovePolicy(...) // Save the policy back to JSON bytes b. e.SavePolicy() }The following illustrates the expected JSON format for a policy. The rbac_policy.json has the same policy found in rbac_policy.csv.
[ {"PType":"p","V0":"alice","V1":"data1","V2":"read"}, {"PType":"p","V0":"bob","V1":"data2","V2":"write"}, {"PType":"p","V0":"data2_admin","V1":"data2","V2":"read"}, {"PType":"p","V0":"data2_admin","V1":"data2","V2":"write"}, {"PType":"g","V0":"alice","V1":"data2_admin"} ]This project is under Apache 2.0 License. See the LICENSE file for the full license text.