package main import ( pgadapter "github.com/casbin/casbin-pg-adapter" "github.com/casbin/casbin/v2" ) func main() { // Initialize a Go-pg adapter and use it in a Casbin enforcer: // The adapter will use the Postgres database named "casbin". // If it doesn't exist, the adapter will create it automatically. a, _ := pgadapter.NewAdapter("postgresql://postgres:password@postgres:5432/postgres?sslmode=disable") // Your driver and data source. // Alternatively, you can construct an adapter instance with *pg.Options: // a, _ := pgadapter.NewAdapter(&pg.Options{ // Database: "...", // User: "...", // Password: "...", // }) // Or you can use an existing DB "abc" like this: // The adapter will use the table named "casbin_rule". // If it doesn't exist, the adapter will create it automatically. e, _ := casbin.NewEnforcer("examples/rbac_model.conf", a) // Load the policy from DB. e.LoadPolicy() // Alternatively load a subset of policy as demonstrated at https://casbin.org/docs/en/policy-subset-loading // e.LoadFilteredPolicy(&pgadapter.Filter{ // P: []string{"", "data1"}, // G: []string{"alice"}, // }) // Check the permission. e.Enforce("alice", "data1", "read") // Modify the policy. // e.AddPolicy(...) // e.RemovePolicy(...) // Save the policy back to DB. e.SavePolicy() }