PostgreSQL adapter for Casbin

Clone this repo:
  1. b6aab35 Merge pull request #4 from closetool/cas by Yang Luo · 5 years ago master
  2. da70583 add travis and github action ci by closetool · 5 years ago
  3. 39baa2d Merge pull request #2 from closetool/master by Yang Luo · 5 years ago
  4. fd91ac1 feat: add filtered adapter(#3) by closetool · 5 years ago
  5. ffa54a8 Change import path to casbin. by Yang Luo · 5 years ago

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