miniruler

Manage roles in contexts

Usage no npm install needed!

<script type="module">
  import miniruler from 'https://cdn.skypack.dev/miniruler';
</script>

README

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

setRoles(roles)

Add or update role level in context

Parameters:

  • roles Object: roles list of roles (keynames) and their levels (values)
  • Return Object: context methods

Example:

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

addRole(roleName, level)

Add a role with its level to the context

Parameters:

  • roleName String
  • level Number

Example:

context.addRole('superadmin', 0)

removeRole(roleName)

Remove a role level from a context

Parameters:

  • roleName String

Example:

context.removeRole('superadmin')

createAction(actionName, rules)

Create an action inside a context and assign rules

Parameters:

  • actionName String
  • rules Object: (optional) can contain level and allowed roles
    • level Number: minimum level of the roles allowed to perform the action
    • include Array: list of role names (strings) allowed to perform the action (even if their levels are not enough)

Example:

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

setLevel(actionName, level)

Set minimum level of the roles allowed to perform an action

Parameters:

  • actionName String
  • level Number

Example:

context.setLevel('create page', 2)

allow(roleName, actionName)

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

Parameters:

  • roleName String
  • actionName String

Example:

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

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:

  • roleName String
  • actionName String

Example:

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

can(roleName, actionName)

Check if user can perform an action in context

Parameters:

  • roleName String
  • actionName String
  • Return Boolean: permission

Example:

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

createContext(contextName)

Create a new context

Parameters:

  • contextName String
  • Return Object: new context

Example:

const subContext = context.createContext('wiki')

getContext(contextName)

Retrieve a child context of the actual context

Parameters:

  • contextName String
  • Return Object: context

Example:

const subContext = context.getContext('wiki')

Node.js tests

npm test




© 2014 jacoborus - Released under MIT License