use go-pg v9 and casbin v2
10 files changed
tree: 14e8907e5d76d7945e6d7498e1531d1a5ac75dd5
  1. examples/
  2. go/
  3. pgexample/
  4. .gitignore
  5. adapter.go
  6. adapter_test.go
  7. docker-compose.yml
  8. go.mod
  9. go.sum
  10. LICENSE
  11. README.md
README.md

Go-pg Adapter

Go-pg Adapter is the Go-pg adapter for Casbin. With this library, Casbin can load policy from PostgreSQL or save policy to it.

Installation

go get github.com/pckhoi/casbin-pg-adapter

Simple Postgres Example

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()
}

Getting Help

License

This project is under Apache 2.0 License. See the LICENSE file for the full license text.