1.1.0 • Published 6 years ago

@rbac/rbac v1.1.0

Weekly downloads
215
License
MIT
Repository
github
Last release
6 years ago

CircleCI npm version size Tweet

  • ⏱ LightWeight
  • 🔥 Blazzing Fast
  • ⚡️️ Zero dependency

Features

  • Focused on operations
  • Scalable
  • Each role is given specific access rights for every operation
  • High granularity in assigning rights

Getting Started

Install

yarn add @rbac/rbac or npm install @rbac/rbac

RBAC is a curried function thats initially takes an object with configurations, then returns another function that takes an object with roles, finally returns an object that holds "can" property that is a function.

You can use it by many ways, below are one of them:

Setup RBAC config

step 01

PropertyTypeParamsDefaultDescription
loggerFunctionrole: Stringoperation: Stringresult: BooleandefaultLoggerFunction that log operations to console
enableLoggerBooleantrueEnable or disable logger

Creating some roles

step 02

RBAC expect an object with roles as properties names.

PropertyTypeExampleDescription
canArray['products:*']Array of strings, list of operations that user can do, since 1.1.0 also support glob
whenBoolean(params , done ) => done (null , true )Optional Promise that should resolve in Truthy or Falsy or Callback function that receives params and done as properties, should return done passing errors, and result
inheritsArray['user']Optional Array of strings, list of roles inherited by this role
IMPORTANT! "when" property should be either a Callback function that receives params and done or a Promise that should resolve in Truthy or Falsy values. Example:
const roles = {
  supervisor: {
    can: [{ name: 'products:find', when: (params, done) => {
      // done receives error as first argument and Truthy or Falsy value as second argument
      done(error, false)
    } }]
  },
  admin: {
    can: [{name: 'products:*', when: new Promise((resolve) => {
      resolve(true);
    })
  }]
  }
};

Check if user can do some operation

step 03

ParamTypeExampleDescription
FirstString'admin'Array of strings, list of operations that user can do
SecondString, Glob (Wildcard), Regex'products:find'Operation to validate
thirdAny{registered: true}Optional Params that will flow to "when" callback Function

want more? checkout examples folder.

Roadmap

  • Wildcard support
  • Regex support
  • Update roles in runtime

Contributing

Contributions are welcome!

  1. Build RBAC
  • Run yarn install to get the RBAC's dependencies
  • Run yarn build to produce minified version of RBAC.
  1. Development mode
  • Having all the dependencies installed run yarn dev. This command will generate an non-minified version of your library and will run a watcher so you get the compilation on file change.
  1. Running the tests
  • Run yarn test
  1. Scripts
  • yarn build - produces production version of your library under the lib folder
  • yarn dev - produces development version of your library and runs a watcher
  • yarn test - well ... it runs the tests :)
  • yarn test:watch - same as above but in a watch mode

License

This project is under MIT License https://opensource.org/licenses/MIT

Thanks

This project scaffold was built with a modified version of webpack-library-starter

Thanks to Karl Düüna (DeadAlready) and his awesome post on medium