Skip to content

julisch94/rqlite-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RQLite Adapter

GoDoc

This adapter is the RQLite adapter for Casbin. With this library, Casbin can load policies from RQLite databases or save policies to it which will then be distributed over the RQLite cluster.

Installation

go get github.com/edomosystems/rqlite-adapter

Simple Example

package main

import (
  "fmt"
  "github.com/casbin/casbin"
  "github.com/edomosystems/rqlite-adapter"
)

func main() {
  /* Specify the http api url your
  * rqlite node is listening on */
  adapter := rqliteadapter.NewAdapter("http://10.10.40.23:4001")

  enforcer := casbin.NewEnforcer("model.conf", adapter, false)

  enforcer.LoadPolicy()
  enforcer.EnableAutoSave(true)

  enforcer.AddRoleForUser("alice", "admin")
  enforcer.AddRoleForUser("bob", "guest")

  enforcer.AddPermissionForUser("admin", "file", "read")
  enforcer.AddPermissionForUser("admin", "file", "write")
  enforcer.AddPermissionForUser("guest", "file", "read")

  enforcer.Enforce("alice", "file", "read")    // -> True
  enforcer.Enforce("alice", "file", "write")   // -> True
  enforcer.Enforce("bob", "file", "read")      // -> True
  enforcer.Enforce("bob", "file", "write")     // -> False

  /* Simple role hirearchie */
  enforcer.AddRoleForUser("chalie", "interim")
  enforcer.AddRoleForUser("interim", "guest")  // interim inherits from guest

  enforcer.Enforce("charlie", "file", "read")  // -> True
  enforcer.Enforce("charlie", "file", "write") // -> False
}

Getting Help

License

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