{"_id":"veritone-functional-permissions","_rev":"50-d2d7468f2c8db77e2013e0e9e1a91655","name":"veritone-functional-permissions","dist-tags":{"beta":"1.0.2-beta","latest":"1.0.3"},"versions":{"1.0.0":{"name":"veritone-functional-permissions","version":"1.0.0","author":"","license":"ISC","_id":"veritone-functional-permissions@1.0.0","maintainers":[{"name":"steveshaffer","email":"steve@shaffer.ninja"}],"dist":{"shasum":"396e84efe058787f2739265bc8ddc12d2e2785be","tarball":"https://registry.npmjs.org/veritone-functional-permissions/-/veritone-functional-permissions-1.0.0.tgz","integrity":"sha512-6pM9PouekkQL3ymaYs9BHp805ZMlXckhzCLgVV8Ara6+b9lTv7uuC9Telx+5UPqfOGeayWqIJ7KDu40LJPovdg==","signatures":[{"sig":"MEUCIGeygCaTrWDAep71KYxrA8+6rSpa4LNSN0ETmaVUf3PaAiEAkFxhG03f88W5xcd2Ml1x2YPi2cNbOUVKpY7j+UxBalI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"396e84efe058787f2739265bc8ddc12d2e2785be","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"steveshaffer","email":"steve@shaffer.ninja"},"_npmVersion":"3.10.3","description":"Veritone functional permissions definitions and helper functions","directories":{},"_nodeVersion":"6.7.0","_npmOperationalInternal":{"tmp":"tmp/veritone-functional-permissions-1.0.0.tgz_1505176355539_0.785432564560324","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"veritone-functional-permissions","version":"1.0.1","author":"","license":"Apache-2.0","_id":"veritone-functional-permissions@1.0.1","maintainers":[{"name":"coolmitch","email":"robb.mitch@gmail.com"},{"name":"steveshaffer","email":"steve@shaffer.ninja"}],"homepage":"https://github.com/veritone/veritone-sdk/tree/master/packages/veritone-functional-permissions","bugs":{"url":"https://github.com/veritone/veritone-sdk/issues"},"dist":{"shasum":"b6c4cd72da0495f653cb1cd9358019ed0eb7fa88","tarball":"https://registry.npmjs.org/veritone-functional-permissions/-/veritone-functional-permissions-1.0.1.tgz","integrity":"sha512-Fgz18tfUfXORbiJSQVIJQCAfpnxxTBp+YxnIYlbi7LtAKbj0RPh7uEFbPqJjN1i7iTINhvAo5VGAv0J6Uyko5A==","signatures":[{"sig":"MEUCIB0P4OjMyr226KBNkNRaXiuYRCT9UD1hJEaqBEHyPtWFAiEAr0Ie1hsFKmpKiJiBtBawqxO1cDr1Q3+0A9DBTfsp8bI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","scripts":{"lint":"./node_modules/gulp/bin/gulp.js lint","test":"./node_modules/gulp/bin/gulp.js test"},"_npmUser":{"name":"coolmitch","email":"robb.mitch@gmail.com"},"repository":{"url":"git+https://github.com/veritone/veritone-sdk/.git","type":"git"},"_npmVersion":"5.3.0","description":"responsible for managing functional permissions","directories":{},"_nodeVersion":"8.6.0","dependencies":{"uuid":"^3.1.0","jsonwebtoken":"^7.4.3"},"devDependencies":{"gulp":"^3.9.1","eslint":"^3.0.1","gulp-debug":"^2.1.2","gulp-eslint":"^3.0.1","gulp-jasmine":"^2.4.0","gulp-nodemon":"^2.0.3","gulp-istanbul":"^1.0.0","gulp-coveralls":"^0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/veritone-functional-permissions-1.0.1.tgz_1507586838438_0.24309505801647902","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"veritone-functional-permissions","version":"1.0.2","author":"","license":"Apache-2.0","_id":"veritone-functional-permissions@1.0.2","maintainers":[{"name":"aaronadaniel","email":"aaron.kalel@gmail.com"},{"name":"albertcbrown","email":"al@veritone.com"},{"name":"christopher-gustavsson","email":"chrisgustavsson1@gmail.com"},{"name":"coolmitch","email":"robb.mitch@gmail.com"},{"name":"kkaiser","email":"kkaiser@veritone.com"},{"name":"linh.le","email":"linh.le@setacinq.vn"},{"name":"mikomonday","email":"miko.monday@gmail.com"},{"name":"mmtbkn","email":"mohamedirvine@gmail.com"},{"name":"seta-tuha","email":"tu.ha@setacinq.vn"},{"name":"steveshaffer","email":"steve@shaffer.ninja"},{"name":"truong_veritone","email":"ktruong@veritone.com"},{"name":"veritone_dev","email":"dev@veritone.com"},{"name":"veritone-jordan","email":"jbelford@veritone.com"}],"homepage":"https://github.com/veritone/veritone-sdk/tree/master/packages/veritone-functional-permissions","bugs":{"url":"https://github.com/veritone/veritone-sdk/issues"},"dist":{"shasum":"ed8bca9b91222e2afa3a1cc7b80da8bdb0b8bab0","tarball":"https://registry.npmjs.org/veritone-functional-permissions/-/veritone-functional-permissions-1.0.2.tgz","fileCount":17,"integrity":"sha512-q0+94PBUy4RegkTWoI6lv2OAEJlLk1jS0lRkdeaJ8awk32OxEI62NsyZ1g+16Pf+L0f47WpPPoCkDM5V/K/tZA==","signatures":[{"sig":"MEUCIQDea3BXyehzPNunyPqSxldJH9GfbG2jJcX1LqQUb6w2sgIgaqdGLcybr65q938eZlPvOaIGNeb6aaBTj6cMy4Knz2E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfITX8CRA9TVsSAnZWagAAGt0P+QHUSjY981M/BirAU5vE\nwLRlej2O1Y0BRqQygRd6+ayJg+I28B3ZNSaU35kvtJmfoWTYfva0Ao5lQ4X4\nxGyzlW8Enf4HXmC/jgnemmzIS9sgnxDmt4YZLcNpPT47e4kUofLxjFyZor60\nhkoqHZs7nKmd50J8bn43ScbEJM6s6Mvn4168eXWClxBZhH6J19cnM+8RxZQX\ny6iV/8FtNb8W4iSRffVrBjILsdE+90QADItTxglcrQQ3glLFmvqXKfQOlcCY\nZRpT0leQkLCu+OotvW55gxt087bWlh6i89BMkUZZBXJc6Tp2FjpUxV2fUoHT\ncHXjKD4H7MNyI8khWb97TENNvZPLQ26aJrPgNWSNyVOW6hmX+UnFjwLNG5xH\nh9btaiceKMcG7IQTbcoTLTmC8E6T549BlONqh5Ta2bk0VAMQ50HGliFT31nb\nxDaxob3x4SMi1ekt0th19lbfLFuW0hRqBZcantNQMKMOisyosOb+Z0ll5oyZ\nwtcKVfvyTVMjsmcITuY36d7P3i/sEBIrVIbUYNm9HjLu97B5+KocLn3qiQ2d\nzU+fmSHDJRhkcoEcP4PJWpNhqaX4uzAEVkljmDhMAC1/tdTGRftpXxXdHr51\nxs1XXTxUMFfzR+ACS1RRZYgOzn4vIcU+l/RtQNUXFtWMxRqk91qIVCnn8fa+\nB/2R\r\n=sfKS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# veritone-functional-permissions\n\n**Table of Contents**\n\n* [Summary](#summary)\n* [Getting Started](#getting-started)\n  * [Depedencies](#depedencies)\n* [Usage](#usage)\n  * [Has Permision](#has-permission)\n  * [Has Any Permission](#has-any-permission)\n  * [Has All Permissions](#has-all-permissions)\n  * [Get Mask From Permissions](#get-mask-from-permissions)\n  * [Get Permissions From Mask](#get-permissions-from-mask)\n  * [Combine Permissions](#combine-permissions)\n* [Go package](#go-package)\n\n## Summary\n\nFunctional permissions library to perform permission checking.\nPermissions are checked against the user permissions (an array of integers), that can be retrieved from core-admin-server.\nThis library may be used on either servers or in the browser, anywhere where it can be `require()`ed.\n\n## Getting Started\n\n### Depedencies\n\n* Something that can `require()` (e.g. Node 6, RequireJS, webpack)\n\n## Usage\n\n### Has Permission\n\nThis checks if the user's permissions satisfies the the requested permission check.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst userInfo = {\n  permissions: [-8125, 31]\n};\n\nif (perm.util.hasAccessTo(adminPerms.org.create, userInfo.permissions)) {\n  //allow user to perform action\n} else {\n  //deny the user\n}\n```\n\n### Has Any Permission\n\nThis checks if the user's permissions satisfies any of the requested permission checks.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst userInfo = {\n  permissions: [-8125, 31]\n};\n\nif (\n  perm.util.hasAccessToAny(\n    [adminPerms.org.create, adminPerms.group.create, adminPerms.role.create],\n    userInfo.permissions\n  )\n) {\n  //allow user to perform action\n} else {\n  //deny the user\n}\n```\n\n### Has All Permissions\n\nThis checks if the user's permissions satisfies all of the requested permission checks.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst userInfo = {\n  permissions: [-8125, 31]\n};\n\nif (\n  perm.util.hasAccessToAll(\n    [adminPerms.org.create, adminPerms.group.create, adminPerms.role.create],\n    userInfo.permissions\n  )\n) {\n  //allow user to perform action\n} else {\n  //deny the user\n}\n```\n\n### Get Mask From Permissions\n\nThis converts permission ids to a mask.\nOptionally, the caller can pass in a mask that will be used to add the permissions to.\n\n```js\nconst mask = getMaskFromPermissionIds([perm.permissions.admin]);\n\n// OR;\n\nconst mask = getMaskFromPermissionIds([perm.permissions.admin], [-1526]);\n```\n\n### Get Permissions From Mask\n\nThis converts a mask to permissions IDs.\n\n```js\nconst permissionIds = getPermissionIdsFromMask([-1526]);\n```\n\n### Combine Permissions\n\nThis combines permissions.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst cmsPerms = perm.permissions.csm;\n\nconst permissions = coombinePermissions(\n  [adminPerms.org.create, adminPerms.group.create, adminPerms.role.create],\n  [cmsPerms.media.create, cmsPerms.wrklows.create]\n);\n```\n\n## Go package\n\nThis repo an also be imported as a go package to help resolve user permissions in go projects.\n\n```go\nimport (\n\tpermissions \"github.com/veritone/functional-permissions-lib\"\n)\n\n// sample usage\nfunc SomethingUseful(...) {\n\t...\n\tmasks := []int{2147483648, 2}\n\n\t// getting permission IDs from masks\n\tperms := GetPermissionIDsFromMasks(masks)\n\t...\n\n\n\tperms2 := []int{1, 13, 26, 62}\n\n\t// getting permission masks from IDs\n\tmasks2 := GetMasksFromPermissionIDs(perms2)\n\n\t...\n\n\t// getting permission ID for a permission path\n\tpermID, err := GetPermissionID(\"cms.media.read\")\n\tdefer permission.Free()\n\t...\n\n}\n```\n\n# License\n\nCopyright 2019, Veritone Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"linh.le","email":"linh.le@setacinq.vn"},"repository":{"url":"git+https://github.com/veritone/veritone-sdk/.git","type":"git"},"_npmVersion":"6.14.4","description":"responsible for managing functional permissions","directories":{},"_nodeVersion":"10.20.1","dependencies":{"uuid":"^3.1.0","jsonwebtoken":"^8.5.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"gulp":"^3.9.1","eslint":"^3.0.1","gulp-debug":"^2.1.2","gulp-eslint":"^3.0.1","gulp-jasmine":"^2.4.0","gulp-nodemon":"^2.0.3","gulp-istanbul":"^1.0.0","gulp-coveralls":"^0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/veritone-functional-permissions_1.0.2_1596012027791_0.276399901369363","host":"s3://npm-registry-packages"}},"1.0.2-beta":{"name":"veritone-functional-permissions","version":"1.0.2-beta","author":"","license":"Apache-2.0","_id":"veritone-functional-permissions@1.0.2-beta","maintainers":[{"name":"aaronadaniel","email":"aaron.kalel@gmail.com"},{"name":"albertcbrown","email":"al@veritone.com"},{"name":"christopher-gustavsson","email":"chrisgustavsson1@gmail.com"},{"name":"coolmitch","email":"robb.mitch@gmail.com"},{"name":"kkaiser","email":"kkaiser@veritone.com"},{"name":"linh.le","email":"linh.le@setacinq.vn"},{"name":"mikomonday","email":"miko.monday@gmail.com"},{"name":"mmtbkn","email":"mohamedirvine@gmail.com"},{"name":"seta-tuha","email":"tu.ha@setacinq.vn"},{"name":"steveshaffer","email":"steve@shaffer.ninja"},{"name":"truong_veritone","email":"ktruong@veritone.com"},{"name":"veritone_dev","email":"dev@veritone.com"},{"name":"veritone-jordan","email":"jbelford@veritone.com"}],"homepage":"https://github.com/veritone/veritone-sdk/tree/master/packages/veritone-functional-permissions","bugs":{"url":"https://github.com/veritone/veritone-sdk/issues"},"dist":{"shasum":"402dfdc4bb8a8b47ee38690f495746256ba6aa96","tarball":"https://registry.npmjs.org/veritone-functional-permissions/-/veritone-functional-permissions-1.0.2-beta.tgz","fileCount":17,"integrity":"sha512-oxERuuUfKKJhbiaOiDKZu8sWRyuaXp/FziRDaoJMUbIrGz9RrV5AR5gIippqzmVaDuGlmLv/HIE1/z+YIvf5tw==","signatures":[{"sig":"MEYCIQDaGXJqw+6AlHmkG/Vm+5rd25UPifC7zxbs+9O9PvWb5AIhAPyYC7Lk49IqkaUa2F4JzSIXX0GvUfltYeM7QmMEdiqQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfITdgCRA9TVsSAnZWagAAmt4QAIwwvFWnxRIFf5yXGL/n\nIQdAzbFAlwjYfKM5rICCHT2DGJyv7jaDHgnJG/2wlEbxYK5Gd+e/YNEkfvwG\n7Hf9BZbjoy28By5TbRtjVJptcoQuiviMqsA6P85GauR95IgvdA42WBSqolt0\n8H+AIc5kz5mGuqBwoHrkUAX/26QP5BcuhwsZLOwjUjsVDJojWfAOQE+pPpNn\nU1K4CCmMqSsrthdbFKFv5yfjY5tzhovkA2S7EPBrSoSDarGoXvmslRZZAozv\n/afrGjqiamusUEqXZ9ZXscfcl622+Jhm6lfgu8RDa+TedRVWoXnakQdZ26M5\nZvts3vr0l8yuC3N3grl3PI3U+bgL5v+AElHQ5y7yt7gc9ZhGlmZHB5PE5aUT\nUr4HPuuM/6+ogppuaogpQVxzYqaAfNGeUpTvrwd67fR4TIVzJCtRUcS8THU8\nV3ofzHO2TkNTJ6cPG/W/vQEh8VW6LBAk9jF7eoAp7F6yD8VgniDTsninxyvG\nSJQIzr6Yuo3kVlMyDYx9eo9yWZlIa/gmzXYdBGOX5fhoYlR58TX846pmrV+f\nYyQc9rIFKbejgZZnOgSStnQXDXApSYGPvqH+TBun3iuVwlH7rSLENXhPg9q5\nzdDDNIeK87R7XB4zf/fUyI5yV8VtUw9MSoM42JpdgLvxvvF97zm4WhfAp+Uo\nQIH1\r\n=6xXA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# veritone-functional-permissions\n\n**Table of Contents**\n\n* [Summary](#summary)\n* [Getting Started](#getting-started)\n  * [Depedencies](#depedencies)\n* [Usage](#usage)\n  * [Has Permision](#has-permission)\n  * [Has Any Permission](#has-any-permission)\n  * [Has All Permissions](#has-all-permissions)\n  * [Get Mask From Permissions](#get-mask-from-permissions)\n  * [Get Permissions From Mask](#get-permissions-from-mask)\n  * [Combine Permissions](#combine-permissions)\n* [Go package](#go-package)\n\n## Summary\n\nFunctional permissions library to perform permission checking.\nPermissions are checked against the user permissions (an array of integers), that can be retrieved from core-admin-server.\nThis library may be used on either servers or in the browser, anywhere where it can be `require()`ed.\n\n## Getting Started\n\n### Depedencies\n\n* Something that can `require()` (e.g. Node 6, RequireJS, webpack)\n\n## Usage\n\n### Has Permission\n\nThis checks if the user's permissions satisfies the the requested permission check.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst userInfo = {\n  permissions: [-8125, 31]\n};\n\nif (perm.util.hasAccessTo(adminPerms.org.create, userInfo.permissions)) {\n  //allow user to perform action\n} else {\n  //deny the user\n}\n```\n\n### Has Any Permission\n\nThis checks if the user's permissions satisfies any of the requested permission checks.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst userInfo = {\n  permissions: [-8125, 31]\n};\n\nif (\n  perm.util.hasAccessToAny(\n    [adminPerms.org.create, adminPerms.group.create, adminPerms.role.create],\n    userInfo.permissions\n  )\n) {\n  //allow user to perform action\n} else {\n  //deny the user\n}\n```\n\n### Has All Permissions\n\nThis checks if the user's permissions satisfies all of the requested permission checks.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst userInfo = {\n  permissions: [-8125, 31]\n};\n\nif (\n  perm.util.hasAccessToAll(\n    [adminPerms.org.create, adminPerms.group.create, adminPerms.role.create],\n    userInfo.permissions\n  )\n) {\n  //allow user to perform action\n} else {\n  //deny the user\n}\n```\n\n### Get Mask From Permissions\n\nThis converts permission ids to a mask.\nOptionally, the caller can pass in a mask that will be used to add the permissions to.\n\n```js\nconst mask = getMaskFromPermissionIds([perm.permissions.admin]);\n\n// OR;\n\nconst mask = getMaskFromPermissionIds([perm.permissions.admin], [-1526]);\n```\n\n### Get Permissions From Mask\n\nThis converts a mask to permissions IDs.\n\n```js\nconst permissionIds = getPermissionIdsFromMask([-1526]);\n```\n\n### Combine Permissions\n\nThis combines permissions.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst cmsPerms = perm.permissions.csm;\n\nconst permissions = coombinePermissions(\n  [adminPerms.org.create, adminPerms.group.create, adminPerms.role.create],\n  [cmsPerms.media.create, cmsPerms.wrklows.create]\n);\n```\n\n## Go package\n\nThis repo an also be imported as a go package to help resolve user permissions in go projects.\n\n```go\nimport (\n\tpermissions \"github.com/veritone/functional-permissions-lib\"\n)\n\n// sample usage\nfunc SomethingUseful(...) {\n\t...\n\tmasks := []int{2147483648, 2}\n\n\t// getting permission IDs from masks\n\tperms := GetPermissionIDsFromMasks(masks)\n\t...\n\n\n\tperms2 := []int{1, 13, 26, 62}\n\n\t// getting permission masks from IDs\n\tmasks2 := GetMasksFromPermissionIDs(perms2)\n\n\t...\n\n\t// getting permission ID for a permission path\n\tpermID, err := GetPermissionID(\"cms.media.read\")\n\tdefer permission.Free()\n\t...\n\n}\n```\n\n# License\n\nCopyright 2019, Veritone Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"linh.le","email":"linh.le@setacinq.vn"},"repository":{"url":"git+https://github.com/veritone/veritone-sdk/.git","type":"git"},"_npmVersion":"6.14.4","description":"responsible for managing functional permissions","directories":{},"_nodeVersion":"10.20.1","dependencies":{"uuid":"^3.1.0","jsonwebtoken":"^8.5.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"gulp":"^3.9.1","eslint":"^3.0.1","gulp-debug":"^2.1.2","gulp-eslint":"^3.0.1","gulp-jasmine":"^2.4.0","gulp-nodemon":"^2.0.3","gulp-istanbul":"^1.0.0","gulp-coveralls":"^0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/veritone-functional-permissions_1.0.2-beta_1596012384026_0.16195545650813337","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"veritone-functional-permissions","version":"1.0.3","author":"","license":"Apache-2.0","_id":"veritone-functional-permissions@1.0.3","maintainers":[{"name":"seta-tuha","email":"tu.ha@setacinq.vn"},{"name":"linh.le","email":"linh.le@setacinq.vn"},{"name":"kkaiser","email":"kkaiser@veritone.com"},{"name":"aaronadaniel","email":"aaron.kalel@gmail.com"},{"name":"mikomonday","email":"miko.monday@gmail.com"},{"name":"christopher-gustavsson","email":"chrisgustavsson1@gmail.com"},{"name":"mmtbkn","email":"mohamedirvine@gmail.com"},{"name":"truong_veritone","email":"ktruong@veritone.com"},{"name":"veritone-jordan","email":"jbelford@veritone.com"},{"name":"veritone_dev","email":"dev@veritone.com"},{"name":"albertcbrown","email":"al@veritone.com"},{"name":"coolmitch","email":"robb.mitch@gmail.com"},{"name":"steveshaffer","email":"steve@shaffer.ninja"}],"homepage":"https://github.com/veritone/veritone-sdk/tree/master/packages/veritone-functional-permissions","bugs":{"url":"https://github.com/veritone/veritone-sdk/issues"},"dist":{"shasum":"8bf6d8debe7e09112fe03217197d5cbc3ecff2fc","tarball":"https://registry.npmjs.org/veritone-functional-permissions/-/veritone-functional-permissions-1.0.3.tgz","fileCount":17,"integrity":"sha512-2/F6yZ/6sX5vfIO0bUIPEqKDo0SsYjpAzRpUwk2BtY/Owfz6lc85kCZvCYr04w2cX31VL+8PZm1adVMZt/Uz/A==","signatures":[{"sig":"MEUCIQDbYQe/LYhTttj5WhqIs1+euPPx4qFmXe7l6KFkDcKpnwIgLU95pZBmm3P4ZLke6unM8u9BgGo9M2PhXABLeplKLKI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfj5vmCRA9TVsSAnZWagAAOzwP/i4CXQAHtheovbX5MOsl\nq+T7kFMcBQco3onoM550wylMMr51Y+xsJrUwHNZ870htKgEJEXZYu78Oqxiw\nva+sqrP8UOAFT4aIm2XYtYUU8eeOnw/20Zb8JUoUDKAiNUIPt9ED7t8tLoC3\n3O7dBJqP60SG8xZWFUdPvknQOLmHTmfr0OgLRDhr4Bgi1TGhOh91q9bicRBu\nsvqeNfqIYfNn5lmZt1h6XYMRw8Z8WB4vP48WzVsZ0txufI27Wb38rVpdBzLb\nNZinKwuvPSk+ZU/Q7sKrBu6faQ0daKMEFdcgaHVRw83ybzZgQTDH4hhb+m2S\nvDSDcU1hM2jh+0F+0qXAJ6mCRm3e1yH/k7Mansu3STWBcLPO6wnglcB3EGEY\niVrxSAeQ8VwczDlUGFnHSca+WQbIOC7qiJmpn/cfy3uNeKJBPiLUFjdYkBOJ\nq7qNBuES+hRTE2sx8vhXrnw43qKwf2IweG0OhPeEGZjovfv4TXfxKTJ4KyQ1\nDcLzp6YYp4tM5pWAAjJg5fyYH4vWJJ/pq/2BJFAbwqr23zjhyQX8R53W9MjR\nEnGAaSN3p9LfnZf7Q4zU8JlmOCjqh1hCvHSllh43PxBP+tYpikU6OFDDJEVb\ngFOQ4GodD4S2qADpHx9fqkISdNX3GRXf8D5Lh9+z4RzcjMNixVcD82tGpRkw\n2Kiq\r\n=S/T1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"linh.le","email":"linh.le@setacinq.vn"},"repository":{"url":"git+https://github.com/veritone/veritone-sdk/.git","type":"git"},"_npmVersion":"6.4.1","description":"responsible for managing functional permissions","directories":{},"_nodeVersion":"8.12.0","dependencies":{"uuid":"^3.1.0","jsonwebtoken":"8.5.1"},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^3.9.1","eslint":"^3.0.1","gulp-debug":"^2.1.2","gulp-eslint":"^3.0.1","gulp-jasmine":"^2.4.0","gulp-nodemon":"^2.0.3","gulp-istanbul":"^1.0.0","gulp-coveralls":"^0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/veritone-functional-permissions_1.0.3_1603247078116_0.22750852110968545","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-09-12T00:32:35.663Z","modified":"2026-07-03T06:48:29.324Z","1.0.0":"2017-09-12T00:32:35.663Z","1.0.1":"2017-10-09T22:07:18.584Z","1.0.2":"2020-07-29T08:40:27.891Z","1.0.2-beta":"2020-07-29T08:46:24.141Z","1.0.3":"2020-10-21T02:24:38.364Z"},"bugs":{"url":"https://github.com/veritone/veritone-sdk/issues"},"license":"Apache-2.0","homepage":"https://github.com/veritone/veritone-sdk/tree/master/packages/veritone-functional-permissions","repository":{"url":"git+https://github.com/veritone/veritone-sdk/.git","type":"git"},"description":"responsible for managing functional permissions","maintainers":[{"email":"dev@veritone.com","name":"veritone_dev"},{"email":"al@veritone.com","name":"albertcbrown"},{"email":"ktruong@veritone.com","name":"truong_veritone"},{"email":"bworrellsmith@veritone.com","name":"bworrellsmith.veritone"},{"email":"sbartmess@veritone.com","name":"severin_veritone"},{"email":"mjanes@veritone.com","name":"mikejdev"},{"email":"ango2@veritone.com","name":"ango2"},{"email":"eortiz@veritone.com","name":"eortiz-vt"},{"email":"kmyers@veritone.com","name":"kimmichurri"},{"email":"tboley@veritone.com","name":"tboley-vt"},{"email":"kkieu@veritone.com","name":"kkieu"},{"email":"robb.mitch@gmail.com","name":"coolmitch"},{"email":"steve@shaffer.ninja","name":"steveshaffer"}],"readme":"# veritone-functional-permissions\n\n**Table of Contents**\n\n* [Summary](#summary)\n* [Getting Started](#getting-started)\n  * [Depedencies](#depedencies)\n* [Usage](#usage)\n  * [Has Permision](#has-permission)\n  * [Has Any Permission](#has-any-permission)\n  * [Has All Permissions](#has-all-permissions)\n  * [Get Mask From Permissions](#get-mask-from-permissions)\n  * [Get Permissions From Mask](#get-permissions-from-mask)\n  * [Combine Permissions](#combine-permissions)\n* [Go package](#go-package)\n\n## Summary\n\nFunctional permissions library to perform permission checking.\nPermissions are checked against the user permissions (an array of integers), that can be retrieved from core-admin-server.\nThis library may be used on either servers or in the browser, anywhere where it can be `require()`ed.\n\n## Getting Started\n\n### Depedencies\n\n* Something that can `require()` (e.g. Node 6, RequireJS, webpack)\n\n## Usage\n\n### Has Permission\n\nThis checks if the user's permissions satisfies the the requested permission check.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst userInfo = {\n  permissions: [-8125, 31]\n};\n\nif (perm.util.hasAccessTo(adminPerms.org.create, userInfo.permissions)) {\n  //allow user to perform action\n} else {\n  //deny the user\n}\n```\n\n### Has Any Permission\n\nThis checks if the user's permissions satisfies any of the requested permission checks.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst userInfo = {\n  permissions: [-8125, 31]\n};\n\nif (\n  perm.util.hasAccessToAny(\n    [adminPerms.org.create, adminPerms.group.create, adminPerms.role.create],\n    userInfo.permissions\n  )\n) {\n  //allow user to perform action\n} else {\n  //deny the user\n}\n```\n\n### Has All Permissions\n\nThis checks if the user's permissions satisfies all of the requested permission checks.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst userInfo = {\n  permissions: [-8125, 31]\n};\n\nif (\n  perm.util.hasAccessToAll(\n    [adminPerms.org.create, adminPerms.group.create, adminPerms.role.create],\n    userInfo.permissions\n  )\n) {\n  //allow user to perform action\n} else {\n  //deny the user\n}\n```\n\n### Get Mask From Permissions\n\nThis converts permission ids to a mask.\nOptionally, the caller can pass in a mask that will be used to add the permissions to.\n\n```js\nconst mask = getMaskFromPermissionIds([perm.permissions.admin]);\n\n// OR;\n\nconst mask = getMaskFromPermissionIds([perm.permissions.admin], [-1526]);\n```\n\n### Get Permissions From Mask\n\nThis converts a mask to permissions IDs.\n\n```js\nconst permissionIds = getPermissionIdsFromMask([-1526]);\n```\n\n### Combine Permissions\n\nThis combines permissions.\n\n```js\nconst perm = require('functional-permissions-lib');\nconst adminPerms = perm.permissions.admin;\nconst cmsPerms = perm.permissions.csm;\n\nconst permissions = coombinePermissions(\n  [adminPerms.org.create, adminPerms.group.create, adminPerms.role.create],\n  [cmsPerms.media.create, cmsPerms.wrklows.create]\n);\n```\n\n## Go package\n\nThis repo an also be imported as a go package to help resolve user permissions in go projects.\n\n```go\nimport (\n\tpermissions \"github.com/veritone/functional-permissions-lib\"\n)\n\n// sample usage\nfunc SomethingUseful(...) {\n\t...\n\tmasks := []int{2147483648, 2}\n\n\t// getting permission IDs from masks\n\tperms := GetPermissionIDsFromMasks(masks)\n\t...\n\n\n\tperms2 := []int{1, 13, 26, 62}\n\n\t// getting permission masks from IDs\n\tmasks2 := GetMasksFromPermissionIDs(perms2)\n\n\t...\n\n\t// getting permission ID for a permission path\n\tpermID, err := GetPermissionID(\"cms.media.read\")\n\tdefer permission.Free()\n\t...\n\n}\n```\n\n# License\n\nCopyright 2019, Veritone Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","readmeFilename":"README.md"}