Easily juggle roles in your project
npm install rolemodel> Easily juggle roles in your project
```
$ npm install rolemodel
`js
const rolemodel = require('rolemodel');
rolemodel('unicorns');
//=> 'unicorns & rainbows'
`
Return: Role
Create role model.
#### name
Type: string
Simple name of the role.
Example:
`jsExample
const Example = role([], {})
const FooBar = roleFooBar([], {})
const num = 1
const Demo1 = roleDemo${num}([], {})`
#### impl
Type: Role[] Array of the Roles
Parent roles which rules inherited from.
Rules concats from all parents.
Example:
`jsFirst
const First = role([], { foo: true })
const Second = roleSecond([First], { bar: true })Third
// Second has all rules from First { foo: true, bar: true }
const Third = role([], { baz: true })
const Total = roleTotal([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:
`jsBasic
const Basic = role([], {
post: {
create: false,
update: false,
delete: false,
moderationAccept: false,
moderationDecline: false,
},
})
const User = roleUser([Basic], {
post: {
create: true,
update: true,
},
})
const Moderator = roleModerator([Basic], {
post: {
moderationAccept: true,
moderationDecline: true,
},
})
const Admin = roleAdmin([User], {`
post: {
delete: true,
},
})
#### .is(name)
Return: boolean
Method check name of the role.
##### name
Type: string
Expected name of the role
Example:
`jsRole
const 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:
`jsExample
const Example = role([], { foo: true, bar: { baz: true } })
Example.can('foo') // true
Example.can('bar.baz') // true
Example.can('DemoDemoDemo') // false
const Child = roleChild([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:
`jsExample
const Example = role([], { 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 = roleChild([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
``
MIT © Sergey Sova