Set up default protection ruleset for default and release branches
1 file changed
tree: cd1d64bf7f5e555a9cb71ed2329c967174404cc0
  1. .github/
  2. example/
  3. pkg/
  4. .asf.yaml
  5. .gitignore
  6. .travis.yml
  7. adapter.go
  8. adapter_test.go
  9. asf.yaml
  10. docker-compose.yml
  11. filtered_adapter.go
  12. go.mod
  13. go.sum
  14. LICENSE
  15. Makefile
  16. README.md
README.md

Casbin Postgres Adapter

Casbin Postgres Adapter is the postgres adapter for Casbin

Installation

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

Example

package main

import (
  "database/sql"
  "os"

  "github.com/casbin/casbin/v2"
  "github.com/casbin/casbin-pg-adapter"
)

func main() {
  connectionString := "postgresql://postgres:@localhost:5432/postgres?sslmode=disable"
  db, err := sql.Open("postgres", os.Getenv("DATABASE_URL"))
  if err != nil {
    panic(err)
  }

  tableName := "casbin"
  adapter, err := casbinpgadapter.NewAdapter(db, tableName)
  // If you are using db schema
  // myDBSchema := "mySchema"
  // adapter, err := casbinpgadapter.NewAdapterWithDBSchema(db, myDBSchema, tableName)
  if err != nil {
    panic(err)
  }

  enforcer, err := casbin.NewEnforcer("./examples/model.conf", adapter)
  if err != nil {
    panic(err)
  }

  // Load stored policy from database
  enforcer.LoadPolicy()

  // Do permission checking
  enforcer.Enforce("alice", "data1", "write")

  // Do some mutations
  enforcer.AddPolicy("alice", "data2", "write")
  enforcer.RemovePolicy("alice", "data1", "write")

  // Persist policy to database
  enforcer.SavePolicy()
}