use go-pg v9 and casbin v2
Go-pg Adapter is the Go-pg adapter for Casbin. With this library, Casbin can load policy from PostgreSQL or save policy to it.
go get github.com/pckhoi/casbin-pg-adapter
package main import ( "os" pgadapter "github.com/pckhoi/casbin-pg-adapter" "github.com/casbin/casbin" ) 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(os.Getenv("PG_CONN")) // Your driver and data source. // 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() // Check the permission. e.Enforce("alice", "data1", "read") // Modify the policy. // e.AddPolicy(...) // e.RemovePolicy(...) // Save the policy back to DB. e.SavePolicy() }
This project is under Apache 2.0 License. See the LICENSE file for the full license text.