Skip to content

rorylshanks/node-policy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

policy

Build Status

Library for controlling access to resources with policy documents. Inspired by AWS IAM policies.

Installation

npm install --save policy

In your source code use:

const Policy = require('policy').Policy
const policyParser = require('policy').parser

let policy1 = new Policy()
let policy2 = policyParser.fromFile(...)
let policy3 = policyParser.fromString(...)

For example how to format policy document see json example file

Example

let policy = new Policy()

policy.allow("customer", "cars", "buy")
policy.allow("seller", "cars", ["buy","sell"])

policy.isAllowed("customer", "cars", "buy") // true
policy.isAllowed("customer", "cars", "sell") // false
policy.isAllowed("seller", "cars", "buy") // true
policy.isAllowed("seller", "cars", "sell") // true
policy.isAllowed("seller", "cars", "destroy") // false
policy.isAllowed("seller", "vans", "buy") // false

Wildcards

You can also use wildcards:

let policy = new Policy()

policy.allow("a_*", ["b_*","d_*"], "c_*")

policy.isAllowed("a_anything", "b_anything", "c_anything") // true
policy.isAllowed("a_anything", "c_anything", "c_anything") // false
policy.isAllowed("a_anything", "d_anything", "c_anything") // true

Deny

Some resources/actions can be denied. Denial has preference before allowance:

let policy = new Policy();

policy.allow("*", "*", "*")
policy.deny("guest", "secret", "*")

policy.isAllowed("user", "blah", "read") // true
policy.isAllowed("guest", "blah", "write") // true
policy.isAllowed("guest", "secret", "any") // false

About

Library for controlling access to resources with policy documents

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%