rolemodel

1.0.0 • Public • Published

rolemodel Build Status Coverage Status

Easily juggle roles in your project

Install

$ npm install rolemodel

Usage

const rolemodel = require('rolemodel');

rolemodel('unicorns');
//=> 'unicorns & rainbows'

API

function role(name: string) => (impl: Role[], rules: object) => Role

Return: Role

Create role model.

name

Type: string

Simple name of the role.

Example:

const Example = role`Example`([], {})

const FooBar = role`FooBar`([], {})

const num = 1
const Demo1 = role`Demo${num}`([], {})

impl

Type: Role[] Array of the Roles

Parent roles which rules inherited from. Rules concats from all parents.

Example:

const First = role`First`([], { foo: true })

const Second = role`Second`([First], { bar: true })
// Second has all rules from First { foo: true, bar: true }
const Third = role`Third`([], { baz: true })

const Total = role`Total`([Second, Third], { daf: true })
// Total has all rules from First, Second, Third { foo: true, bar: true, baz: true, daf: true }

rules

Type: object

Any object of rules with boolean as values. Rules in current role overwrites rules in parent roles.

Example:

const Basic = role`Basic`([], {
  post: {
    create: false,
    update: false,
    delete: false,
    moderationAccept: false,
    moderationDecline: false,
  },
})

const User = role`User`([Basic], {
  post: {
    create: true,
    update: true,
  },
})

const Moderator = role`Moderator`([Basic], {
  post: {
    moderationAccept: true,
    moderationDecline: true,
  },
})

const Admin = role`Admin`([User], {
  post: {
    delete: true,
  },
})

Role

.is(name)

Return: boolean

Method check name of the role.

name

Type: string

Expected name of the role

Example:

const Role = role`Role`([], {})

Role.is('Role') // true
Role.is('Foo') // false

.can(name)

Return: boolean

Check if role has true right.

name

Type: string

Name of the target rule. If rule not found returns false.

Example:

const Example = role`Example`([], { foo: true, bar: { baz: true } })

Example.can('foo') // true
Example.can('bar.baz') // true
Example.can('DemoDemoDemo') // false


const Child = role`Child`([Example], { demo: true, bar: { foo: true } })

Child.can('foo') // true
Child.can('bar.baz') // true
Child.can('bar.foo') // true
Child.can('demo') // true
Child.can('FFFFFFF') // false

.has(name)

Return: boolean

Check if role has right with any value. If rule not found returns false.

name

Type: string

Name of the target rule.

Example:

const Example = role`Example`([], { bar: { baz: true, demo: false } })

Example.has('foo') // false
Example.has('bar.baz') // true
Example.has('bar.demo') // true
Example.has('DemoDemoDemo') // false


const Child = role`Child`([Example], { bar: { foo: true } })

Child.has('foo') // false
Child.has('bar.baz') // true
Child.has('bar.foo') // true
Child.has('demo') // false
Child.has('FFFFFFF') // false

License

MIT © Sergey Sova

Readme

Keywords

none

Package Sidebar

Install

npm i rolemodel

Weekly Downloads

1

Version

1.0.0

License

MIT

Last publish

Collaborators

  • lestad