JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q18585F
  • License mit

Role Based Access Control

Package Exports

  • easyrole

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (easyrole) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

easyrole

Easy Role Based Access Control

Install

npm install easyrole

Example

var Rbac= require('easyrole');
var rbac= new Rbac();
rbac.setRoles(['admins', 'editors', 'developers', 'users']);

// admins
rbac.admins.allow('*');

// editors
rbac.editors.allow({
    blogs: ['create', 'read', 'update', 'delete'],
    settings: ['read']
})

// developers
rbac.developers.extend(rbac.editors)
               .allow({
               		settings: ['read', 'update']
               })

// users
rbac.users.allow({
    blogs: ['read']
})

// can admin creare blog
rbac.can('admins').do('blogs.create') //return true

// can editor update settings
rbac.can('editors').do('settings.update') //return false

Getting Start

set roles first

var Rbac= require('easyrole');
var rbac= new Rbac();
rbac.setRoles(['admins', 'editors', 'developers', 'users']);

set permissions to roles

// give admins all permissions
rbac.admins.allow('*');

// editors
rbac.editors.allow({
    blogs: ['create', 'read', 'update', 'delete'],
    settings: ['read']
})

// extend editors permissoins to developers
rbac.developers.extend(rbac.editors)
               .allow({
               		settings: ['read', 'update']
               })

use it

rbac.can('admins').do('blogs.create') //return true

Api

rbac.setRoles([roles..])

set roles for your rbac

rbac[role].allow(permissions)

add permissions to role

rbac[role].extend(role object)

inherit a role permission

rbac.can('role').do('resource.action')

return boolean

rbac.can('admins').do('blogs.create') //return true

rbac.getRoles('role')

return a role object

var admin= rbac.getRoles('admins');
admin.can('blogs.create') // return true

Todo

  • use merge instead of replace in permission extend