feat: fix CI build by pinning @types/babel__traverse for TypeScript 3.7.4 compatibility (#39)
4 files changed
tree: d74ba35342e0b9dd7344d50825fee5c3309ebde6
  1. .github/
  2. examples/
  3. src/
  4. test/
  5. .gitignore
  6. .prettierrc
  7. .releaserc.json
  8. CHANGELOG.md
  9. jest.config.js
  10. LICENSE
  11. package.json
  12. README.md
  13. tsconfig.json
  14. tslint.json
  15. yarn.lock
README.md

Redis Watcher

CI Coverage Status NPM version NPM download Discord

Redis Watcher is the Redis watcher for Node-Casbin. With this library, Node-Casbin can synchronize policy changes across multiple enforcer instances via Redis pub/sub.

This watcher is based on ioredis and supports both single Redis instances and Redis clusters.

Installation

npm install @casbin/redis-watcher

Note: The old package name redis-watcher has been deprecated on NPM. Please use @casbin/redis-watcher instead.

Simple Example

Using Redis:

import { RedisWatcher } from '@casbin/redis-watcher';
import { newEnforcer } from 'casbin';

async function myFunction() {
    // Initialize the watcher
    // See https://github.com/luin/ioredis/blob/master/API.md#new-redisport-host-options
    const watcher = await RedisWatcher.newWatcher('redis://localhost:6379/5');

    // Initialize the enforcer
    const enforcer = await newEnforcer('examples/authz_model.conf', 'examples/authz_policy.csv');

    // Set the watcher for the enforcer
    enforcer.setWatcher(watcher);

    // Update the policy
    await enforcer.addPolicy('alice', 'data1', 'read');
    
    // The policy change will be synchronized to other enforcers via Redis pub/sub
}

Using Redis Cluster:

import { RedisWatcher } from '@casbin/redis-watcher';
import { newEnforcer } from 'casbin';

async function myFunction() {
    // Initialize the watcher with Redis cluster
    // See https://github.com/luin/ioredis/blob/master/API.md#new-clusterstartupnodes-options
    const watcher = await RedisWatcher.newWatcherWithCluster([
        { port: 7000, host: 'localhost' },
        { port: 7001, host: 'localhost' },
        { port: 7002, host: 'localhost' }
    ]);

    // Initialize the enforcer
    const enforcer = await newEnforcer('examples/authz_model.conf', 'examples/authz_policy.csv');

    // Set the watcher for the enforcer
    enforcer.setWatcher(watcher);

    // Update the policy
    await enforcer.addPolicy('bob', 'data2', 'write');
    
    // The policy change will be synchronized to other enforcers via Redis pub/sub
}

Getting Help

License

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