role-calc

library to work with roles, contains calculation of times for the session, validation of required roles

MIT License

Stars
4
Committers
1

role-calc

library to work with roles, contains calculation of times for the session, validation of required roles

This library is ideal for working with redis-jwt

Installation

Npm

npm install role-calc --save

Yarn

yarn add role-calc

Usage

has

Evaluate if any of the required roles are met or all


import {has} from 'role-calc';

// Roles required
let required = [
    'Developer',
    'Specialist',
    'Technician',
    'Director',
    'Manager',
    'Designer',
    'Analyst',
    'Administrator'
];

// Roles user
let candidates = [
    'Developer',
    'Administrator',
    'Designer'
];

// if it contains one
has(required, candidates);         // -> true
has(['Developer'], candidates);    // -> true
has(required, ['Other', 'Fake']);  // -> false

// must meet everyone '*'
has(required, candidates, '*');                   // -> false
has(['Developer', 'Designer'], candidates, '*');  // -> true
has(['Director'], ['Director', 'Other'], '*');    // -> true

time

Gets the times of a list from an array of roles


import {time} from 'role-calc';

// Roles with time
let roles = [
    {
        role: 'Developer',
        ttl: '15 minutes'
    },
    {
        role: 'Specialist',
        ttl: '2 hours'
    },
    {
        role: 'Manager',
        ttl: '3 days'
    },
    {
        role: 'Administrator',
        ttl: '1 years'
    },
    {
        role: 'Director',
        ttl: '90 minutes'
    },
    {
        role: 'Designer',
        ttl: '55 hours'
    },
    {
        role: 'other'
    }
];

// Roles user
let candidates = [
    'Developer',
    'Administrator',
    'Designer'
];

time(roles, candidates);
/*
->
[
  { role: 'Developer', ttl: '15 minutes' },
  { role: 'Administrator', ttl: '1 years' },
  { role: 'Designer', ttl: '55 hours' }
]
*/

calc

Calculate time of multiple roles assigned to a user


import {calc} from 'role-calc';

// Roles with time
let roles = [
    {
        role: 'Developer',
        ttl: '15 minutes'
    },
    {
        role: 'Specialist',
        ttl: '2 hours'
    },
    {
        role: 'Manager',
        ttl: '3 days'
    },
    {
        role: 'Administrator',
        ttl: '1 years'
    },
    {
        role: 'Director',
        ttl: '90 minutes'
    },
    {
        role: 'Designer',
        ttl: '55 hours'
    },
    {
        role: 'other'
    }
];

/*
time(roles, option, format)

- roles: array
- option: max, min, sum, average
- format(optional): milliseconds, seconds, minutes, hours, days, weeks, months, years
*/

calc(roles, 'sum'); // -> 533805 minutes
calc(roles, 'max', 'hours'); // -> 8766 hours
calc(roles, 'min', 'minutes'); // -> 15 minutes
calc(roles, 'average', 'days'); // -> 61.782986111111114 days

Development

Start

npm start

Compile

npm run compile

Test

npm test

License

MIT © Leonardo Rico