rediswatcher

package module
v0.0.0-...-52f9bd4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 6, 2019 License: Apache-2.0 Imports: 5 Imported by: 0

README

Redis Watcher Build Status

Redis Watcher is a Redis watcher for Casbin.

Installation

go get github.com/billcobbler/casbin-redis-watcher

Simple Example

package main

import (
    "github.com/casbin/casbin"
    "github.com/casbin/casbin/util"
    "github.com/billcobbler/casbin-redis-watcher"
)

func updateCallback(msg string) {
    util.LogPrint(msg)
}

func main() {
    // Initialize the watcher.
    // Use the Redis host as parameter.
    w, _ := rediswatcher.NewWatcher("127.0.0.1:6379")
    
    // Initialize the enforcer.
    e := casbin.NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")
    
    // Set the watcher for the enforcer.
    e.SetWatcher(w)
    
    // Set callback to local example
    w.SetUpdateCallback(updateCallback)
    
    // Update the policy to test the effect.
    // You should see "[casbin rules updated]" in the log.
    e.SavePolicy()
}

Getting Help

License

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewPublishWatcher

func NewPublishWatcher(addr string, setters ...WatcherOption) (persist.Watcher, error)

NewPublishWatcher return a Watcher only publish but not subscribe

func NewWatcher

func NewWatcher(addr string, setters ...WatcherOption) (persist.Watcher, error)

NewWatcher creates a new Watcher to be used with a Casbin enforcer addr is a redis target string in the format "host:port" setters allows for inline WatcherOptions

Example:
		w, err := rediswatcher.NewWatcher("127.0.0.1:6379", rediswatcher.Password("pass"), rediswatcher.Channel("/yourchan"))

A custom redis.Conn can be provided to NewWatcher

Example:
		c, err := redis.Dial("tcp", ":6379")
		w, err := rediswatcher.NewWatcher("", rediswatcher.WithRedisConnection(c)

Types

type Watcher

type Watcher struct {
	// contains filtered or unexported fields
}

func (*Watcher) Close

func (w *Watcher) Close()

Close disconnects the watcher from redis

func (*Watcher) SetUpdateCallback

func (w *Watcher) SetUpdateCallback(callback func(string)) error

SetUpdateCallBack sets the update callback function invoked by the watcher when the policy is updated. Defaults to Enforcer.LoadPolicy()

func (*Watcher) Update

func (w *Watcher) Update() error

Update publishes a message to all other casbin instances telling them to invoke their update callback

type WatcherOption

type WatcherOption func(*WatcherOptions)

func Channel

func Channel(subject string) WatcherOption

func Password

func Password(password string) WatcherOption

func Protocol

func Protocol(protocol string) WatcherOption

func WithRedisPubConnection

func WithRedisPubConnection(connection redis.Conn) WatcherOption

func WithRedisSubConnection

func WithRedisSubConnection(connection redis.Conn) WatcherOption

type WatcherOptions

type WatcherOptions struct {
	Channel  string
	PubConn  redis.Conn
	SubConn  redis.Conn
	Password string
	Protocol string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL