{"_id":"policy","_rev":"3-afad0f63d7c204b1961b62ab24436db2","name":"policy","description":"Library for controlling access to resources with policy documents","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"policy","description":"Library for controlling access to resources with policy documents","version":"1.0.0","license":"MIT","keywords":["acl","policy","aws","iam","access","control"],"devDependencies":{"mocha":"^3.4.2"},"scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/jakubknejzlik/node-policy.git"},"gitHead":"d8d5b32759cd9ba01b88907caa68ca73491a7fd5","bugs":{"url":"https://github.com/jakubknejzlik/node-policy/issues"},"homepage":"https://github.com/jakubknejzlik/node-policy#readme","_id":"policy@1.0.0","_shasum":"8eae24242ece8909cdd4d9f649da9a45897e7c8a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"jakub.knejzlik","email":"jakub.knejzlik@gmail.com"},"dist":{"shasum":"8eae24242ece8909cdd4d9f649da9a45897e7c8a","tarball":"https://registry.npmjs.org/policy/-/policy-1.0.0.tgz","integrity":"sha512-pRahNOBUmjUURDrptOv8iJHy3TfnWjxH262l8J9aEKz5+txA/eFeLEn84NT8Ohq95VZU0sjPD/JOwX/diCCc9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmLlVzbFE54OT7umWsFvT88S8U22eBiglRu3cSip0UPQIhAKu3qp3PQK0bb78Buawkj4nwpY63mcChv858nBWwXUSw"}]},"maintainers":[{"name":"jakub.knejzlik","email":"jakub.knejzlik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/policy-1.0.0.tgz_1498644930201_0.9468972489703447"}}},"readme":"# policy\n\n[![Build Status](https://travis-ci.org/jakubknejzlik/node-policy.svg?branch=master)](https://travis-ci.org/jakubknejzlik/node-policy)\n\nLibrary for controlling access to resources with policy documents. Inspired by AWS IAM policies.\n\n# Installation\n\n```\nnpm install --save policy\n```\n\nIn your source code use:\n```\nconst Policy = require('policy').Policy\nconst policyParser = require('policy').parser\n\nlet policy1 = new Policy()\nlet policy2 = policyParser.fromFile(...)\nlet policy3 = policyParser.fromString(...)\n```\n\nFor example how to format policy document see [json example file](https://github.com/jakubknejzlik/node-policy/blob/master/test/example.policy.json)\n\n# Example\n\n```\nlet policy = new Policy()\n\npolicy.allow(\"customer\", \"cars\", \"buy\")\npolicy.allow(\"seller\", \"cars\", [\"buy\",\"sell\"])\n\npolicy.isAllowed(\"customer\", \"cars\", \"buy\") // true\npolicy.isAllowed(\"customer\", \"cars\", \"sell\") // false\npolicy.isAllowed(\"seller\", \"cars\", \"buy\") // true\npolicy.isAllowed(\"seller\", \"cars\", \"sell\") // true\npolicy.isAllowed(\"seller\", \"cars\", \"destroy\") // false\npolicy.isAllowed(\"seller\", \"vans\", \"buy\") // false\n\n```\n\n## Wildcards\nYou can also use wildcards:\n```\nlet policy = new Policy()\n\npolicy.allow(\"a_*\", [\"b_*\",\"d_*\"], \"c_*\")\n\npolicy.isAllowed(\"a_anything\", \"b_anything\", \"c_anything\") // true\npolicy.isAllowed(\"a_anything\", \"c_anything\", \"c_anything\") // false\npolicy.isAllowed(\"a_anything\", \"d_anything\", \"c_anything\") // true\n```\n\n## Deny\nSome resources/actions can be denied. Denial has preference before allowance:\n```\nlet policy = new Policy();\n\npolicy.allow(\"*\", \"*\", \"*\")\npolicy.deny(\"guest\", \"secret\", \"*\")\n\npolicy.isAllowed(\"user\", \"blah\", \"read\") // true\npolicy.isAllowed(\"guest\", \"blah\", \"write\") // true\npolicy.isAllowed(\"guest\", \"secret\", \"any\") // false\n```\n","maintainers":[{"name":"jakub.knejzlik","email":"jakub.knejzlik@gmail.com"}],"time":{"modified":"2022-06-24T06:32:43.012Z","created":"2017-06-28T10:15:31.108Z","1.0.0":"2017-06-28T10:15:31.108Z"},"homepage":"https://github.com/jakubknejzlik/node-policy#readme","keywords":["acl","policy","aws","iam","access","control"],"repository":{"type":"git","url":"git+https://github.com/jakubknejzlik/node-policy.git"},"bugs":{"url":"https://github.com/jakubknejzlik/node-policy/issues"},"license":"MIT","readmeFilename":"README.md","users":{"rocket0191":true}}