Home

Awesome

miniruler

Build Status

Manage roles in contexts asynchronously.

Installation

npm install miniruler

Example

const ruler = require('miniruler')

/* - action with level - */

ruler.setRoles({
  admin: 1,
  editor: 2,
  author: 3,
  guest: 4
})

ruler.createAction('manage settings', {
  level: 1
})

ruler.can('admin', 'manage settings')  // => true
ruler.can('editor', 'manage settings')  // => false
ruler.can('author', 'manage settings')  // => false


/* - action with extra roles - */

ruler.createAction('create post', {
  level: 2,
  include: ['author']
})

ruler.can('editor', 'create post') // true
ruler.can('author', 'create post') // true
ruler.can('guest', 'create post') // false

ruler.revoke('author', 'create post')
ruler.can('author', 'create post') // false

Context API

<a name="setRoles"></a>

setRoles(roles)

Add or update role level in context

Parameters:

Example:

context.setRoles({
  admin: 1,
  editor: 2,
  author: 3
})

<a name="addRole"></a>

addRole(roleName, level)

Add a role with its level to the context

Parameters:

Example:

context.addRole('superadmin', 0)

<a name="removeRole"></a>

removeRole(roleName)

Remove a role level from a context

Parameters:

Example:

context.removeRole('superadmin')

<a name="createAction"></a>

createAction(actionName, rules)

Create an action inside a context and assign rules

Parameters:

Example:

context.createAction('create page', {
  level: 3,
  include: ['other']
})

<a name="setLevel"></a>

setLevel(actionName, level)

Set minimum level of the roles allowed to perform an action

Parameters:

Example:

context.setLevel('create page', 2)

<a name="allow"></a>

allow(roleName, actionName)

Allow a role to perform an action (even if the level of the role is under the action minimum level)

Parameters:

Example:

context.allow('guest', 'create post')

<a name="revoke"></a>

revoke(roleName, actionName)

Revoke permission of a role to perform a action (the role will still perform the action if its level is allowed)

Parameters:

Example:

context.revoke('guest', 'create post')

<a name="can"></a>

can(roleName, actionName)

Check if user can perform an action in context

Parameters:

Example:

context.createAction('delete')
context.addRole('editor', 'delete')
context.can('editor', delete) // false

<a name="createContext"></a>

createContext(contextName)

Create a new context

Parameters:

Example:

const subContext = context.createContext('wiki')

<a name="getContext"></a>

getContext(contextName)

Retrieve a child context of the actual context

Parameters:

Example:

const subContext = context.getContext('wiki')

Node.js tests

npm test

<br><br>


© 2014 jacoborus - Released under MIT License