{"_id":"@bagaar/ember-permissions","_rev":"17-2fca99f46a2dbfef6f8ce16e7209393a","name":"@bagaar/ember-permissions","description":"Permission management for Ember applications.","dist-tags":{"latest":"6.0.0"},"versions":{"0.1.0":{"name":"@bagaar/ember-permissions","version":"0.1.0","keywords":["bagaar","bgr","ember","ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@0.1.0","maintainers":[{"name":"bertdeblock","email":"bert@bagaar.be"}],"homepage":"https://github.com/Bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/Bagaar/ember-permissions/issues"},"dist":{"shasum":"716368b85a6249145b8297bb40585e62dffe33d8","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-0.1.0.tgz","fileCount":11,"integrity":"sha512-XAhfiW9fqq2lW+WAsnkdx1DqvMoMmYlNc5qJJxsn6QmRuAmzNfQmt0gDYrTUP9OxccaKIUu2kP3BXLXfAuf5OQ==","signatures":[{"sig":"MEUCIQD/KAmmw7Q3H8G1jvr0ePDf/Kln5DkjQx/j5ZubF9eGbwIgDb3OW5GEOcrHaxgbwNSXqc3iADyZ+CQHogLg/O3rvPo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYUAZCRA9TVsSAnZWagAAgwYP/29dh6jcVFqC26qKONZq\nBQ5t4WuRVDpMz1xenkLc6NhWE76klbZvRKr7S99D/t9IolrtQvB108ICcyTI\nJP4sMLjw8DL1WrzMJVMrxtmbcEie0Mp6UK4BcFM+w4E3xnXMBOdZgRO/lXh3\ncn/7DKLCYDnjz7pFcIL/f8YRXAecHnC1s4WJKHD/LnSZZuSmO+F002B8DLy7\nWm6lPbSng4YKZZpAQkOkIwxnDDSQgY4f3L4cddsjPjWvLVN5AqC8St2zsLf5\nyxWq+avhWv3KSU8or8GCesnakJ+ANKliqU9R/2Yp4yZJk58ukvvHaGDh/fkV\nOmHsf8UvJKiLwryJHB57GTNxNdZTcRvYhwNmx0piCNuwjAjDhR7uIw1UexO2\n5Bbd0q57x7CyoMuhl52RDBnWDytAHg0tW5voESTf9VsyazrFB27WSWCl4UQy\njpbqorjNlbIClPuXlcGBzwzk6L7OE4A8dSVatlVDWUZiMR2U6/LmNt85N6GH\nk7GAYwMLvUjjc/aPpWTB3Snnkg6nzGL9VfR35DsQfwMcj+bsQJgBPJUDVuYy\n1n+NGQMv8jYV8lgq0XiSz4Wp7WN3N5cVjjVcgip787bm47g/bofb0bRLY5ms\ngXjvoeITnmzvs+33ZhvOntWPimCCPbZEksvmaBsxVjLLO2Kgdnx6WU/9UmCd\nT8d+\r\n=37i8\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":"6.* || 8.* || >= 10.*"},"gitHead":"593f0d6d91f664f4482cf0894da95f0c4307bf15","scripts":{"test":"ember test","build":"ember build","start":"ember serve","lint:js":"eslint .","release":"standard-version","lint:hbs":"ember-template-lint .","test:all":"ember try:each"},"_npmUser":{"name":"bertdeblock","email":"bert@bagaar.be"},"repository":{"url":"git+https://github.com/Bagaar/ember-permissions.git","type":"git"},"_npmVersion":"6.4.1","description":"Permission management for Ember applications.","directories":{"doc":"doc","test":"tests"},"ember-addon":{"configPath":"tests/dummy/config"},"_nodeVersion":"8.12.0","dependencies":{"ember-cli-babel":"^7.1.2"},"_hasShrinkwrap":false,"devDependencies":{"ember-cli":"~3.7.1","ember-try":"^1.0.0","loader.js":"^4.7.0","qunit-dom":"^0.8.0","ember-qunit":"^4.2.0","ember-source":"~3.7.0","ember-cli-sri":"^2.1.1","ember-resolver":"^5.0.1","ember-cli-eslint":"^5.1.0","ember-cli-uglify":"^2.1.0","standard-version":"^4.4.0","broccoli-asset-rev":"^3.0.0","ember-cli-htmlbars":"^3.0.0","eslint-plugin-node":"^8.0.1","eslint-plugin-ember":"^6.2.0","@bagaar/eslint-config":"^0.5.0","ember-cli-template-lint":"^1.0.0-beta.1","ember-load-initializers":"^2.0.0","@ember/optional-features":"^0.7.0","ember-source-channel-url":"^1.1.0","@bagaar/eslint-config-ember":"^0.4.0","ember-cli-dependency-checker":"^3.0.0","ember-cli-inject-live-reload":"^2.0.1","ember-maybe-import-regenerator":"^0.1.6","ember-export-application-global":"^2.0.0","ember-disable-prototype-extensions":"^1.1.3","ember-cli-htmlbars-inline-precompile":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_0.1.0_1549877273091_0.9787167126182608","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@bagaar/ember-permissions","version":"0.2.0","keywords":["bagaar","bgr","ember","ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@0.2.0","maintainers":[{"name":"bertdeblock","email":"bert@bagaar.be"}],"homepage":"https://github.com/Bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/Bagaar/ember-permissions/issues"},"dist":{"shasum":"aba80fc82e834c22f5ee298cb2a8e1a923303de6","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-0.2.0.tgz","fileCount":15,"integrity":"sha512-6c7lsm9yy9CPX3SM+CDna71PTz74nYF6T/QVONgIADmx5UNK5UtayCCiDXAQMQqrhHeEfSv5avnjvmelGLlS7Q==","signatures":[{"sig":"MEQCIBhvKnvDJwaWVzsSNPaMMTQ9o/wtA5QtDCcEe8T4pAgfAiBsK2y8BVAoTz3fn2TPtYLo7R5FBX6iOhaT/4wzW1IpRA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0aIuCRA9TVsSAnZWagAAHHYQAIXkkdvr/M4feGCdyaou\nBu9evGiBUOxm4Vpq/2ahI9rGadcGYpNv/Hr8igNEvq9PpW4Y17IfBf5mzYlK\nrfdifHleuHcmu1KN315/+ME6UDYbXhWV4Idw+Fa8KKHwPlKouUbii3WjkW72\nOx6KC2DDbV2mZeaM67hPPAch8pd1qFKWe8l2NYvyzvwz6C0gnR+GPOFVQQww\nNxGePhRiBbSJXn2j8daxpZZoFr6XnfFUCoilVJoJNxRXb0sZeN4jwYnhjeyY\nZQtKsRNCwqLNo9jXyK6XDxIseD9iSK8xuN93Cx5WJOznem1wH9osW+ZcArrB\nLk2ZIk7kbtZ+BpScTTjdnTFCSOUZsYN/poE05yASkQ5FEoCywTZb0VCl+OSR\nAujNpjT4yBd6jAXFxwzYJkNpt0zO41Z62ebVDfb0GhAXa8kShnSNrfnpn3DU\ner6NCV6Qba5MzpisaLGEj8/knY4JgjodCDBNso2F2KWDO8TCxptZSh4UqfsD\n6/78pQfMtAJvjUCrK1IPsZbmptY7ATF2fOf3nxT51JIj5RlrTbs8jXaar+zo\nnUXKD338SE0px8FPoQ8B3TE2shKPI55g2R6ll2d0ScJVfAwxxBo9JqPnKZDx\nE44HltDKtWjt4lbv8mXJ6QPwOZZPBAtmmysF5bEMVys7mewOcXZzYJNqhaAv\nq0RF\r\n=508v\r\n-----END PGP SIGNATURE-----\r\n"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"engines":{"node":"8.* || >= 10.*"},"gitHead":"6a376314cdf01bf5dc709b9a5bf37c5c3d5c4477","scripts":{"test":"ember test","build":"ember build","start":"ember serve","lint:js":"eslint .","release":"standard-version","lint:hbs":"ember-template-lint .","test:all":"ember try:each","format:js":"prettier-standard './**/*.js'"},"_npmUser":{"name":"bertdeblock","email":"bert@bagaar.be"},"repository":{"url":"git+https://github.com/Bagaar/ember-permissions.git","type":"git"},"_npmVersion":"6.4.1","description":"Permission management for Ember applications.","directories":{"doc":"doc","test":"tests"},"ember-addon":{"configPath":"tests/dummy/config"},"lint-staged":{"*.js":["prettier-standard","eslint --fix","git add"]},"_nodeVersion":"10.15.2","dependencies":{"ember-cli-babel":"^7.1.2"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^1.3.1","ember-cli":"~3.9.0","ember-try":"^1.0.0","loader.js":"^4.7.0","qunit-dom":"^0.8.0","ember-qunit":"^4.2.0","lint-staged":"^8.1.5","ember-source":"~3.9.0","ember-cli-sri":"^2.1.1","ember-resolver":"^5.0.1","ember-cli-eslint":"^5.1.0","ember-cli-uglify":"^2.1.0","standard-version":"^4.4.0","prettier-standard":"^9.1.1","broccoli-asset-rev":"^3.0.0","ember-cli-htmlbars":"^3.0.0","eslint-plugin-node":"^8.0.1","eslint-plugin-ember":"^6.3.0","ember-cli-template-lint":"^1.0.0-beta.1","ember-load-initializers":"^2.0.0","@ember/optional-features":"^0.7.0","ember-source-channel-url":"^1.1.0","@bagaar/eslint-config-ember":"^0.5.0","ember-cli-dependency-checker":"^3.1.0","ember-cli-inject-live-reload":"^2.0.1","ember-maybe-import-regenerator":"^0.1.6","ember-export-application-global":"^2.0.0","ember-disable-prototype-extensions":"^1.1.3","ember-cli-htmlbars-inline-precompile":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_0.2.0_1557242413541_0.8193417546477684","host":"s3://npm-registry-packages"}},"1.0.0-beta.0":{"name":"@bagaar/ember-permissions","version":"1.0.0-beta.0","keywords":["bagaar","ember","ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@1.0.0-beta.0","maintainers":[{"name":"bertdeblock","email":"bert@bagaar.be"},{"name":"sambagger","email":"sam.vancampenhout@bagaar.be"}],"homepage":"https://github.com/Bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/Bagaar/ember-permissions/issues"},"dist":{"shasum":"5bd0e472744793371d0357ff019a2b3cc5f200af","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-1.0.0-beta.0.tgz","fileCount":15,"integrity":"sha512-cIdn+asANNBqxAIpH1nGas+K5+Dbn03Zyy0TVTvUHMNEEprjLDhGAjaT3II7Kwxp4eg3ipcjzvUMHJq9I4Fsuw==","signatures":[{"sig":"MEUCIAbFHBo7XtNjVcjnhKhdIHrgNSgBTwVXD1qEED3HGeHWAiEAglC5I+q1DW++RZdylhV3PBgEltfJNHsLCTRFbXfSaHw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepUp/CRA9TVsSAnZWagAA+qcQAKDwCUMHr+sLhZSnuuCN\no/WobKMYU4ppmjbGQmXgJq2m3hIjnuim8LGAQTONOu58hGPHlAOgf/BS5XQG\nJ51c9XmO6786tvAJIT6TeKaB1QgO8+ID2GbRjY9RnyqFQFnAvs6NdBALNFe1\nRtKpOHVC0zFrNRD1Qr+SuCNRmoX1rnHgELnTvZB7fEZtUtTbrFyyl2ZhSJQN\nelrVA61Z6n4ih2morUlql1COvgNPoQcyJokfRL6rJeoL36JI09Fp0J65DADg\ns5k4qOZgsYx2l/9mPMsLYb2VTwBj7n27Ru8h0XCNt4Xea+2xk/Jcc2t9xqVa\nE6kxNOPBkYxBCSKP1D5sJClcUZwl9cMcCpxv6lyisIVuCrniK9DnUu/PPVnk\ng0JxMG0HOVkcYecOnzb/OZ42+VWPOtx5WPFRX6WuH3KdxVpG8KaKWHyPEmob\nSHuUt/2lyDopyDPAF1i/GVR2tczm47gXlnmDcSvASGaNRTi7PinUV9yhpjnT\n7EeaWCybJwNQvIgW6LoKzBv0DLSVV6z3zTdSfnDQDoikRzAceBi5m5HGQMOt\nRGOWF8DPlUgaqCRKwW6Qcj0QASJjWoY4MYMNyrXVJnY3W10qW1G0cZG9zD15\nkihac1Iwzf2K9x6rbQFg9wQFs4WdQND09YmM2Z6dPAH+70rDgbEXByULoJ0e\nt5m6\r\n=tJQu\r\n-----END PGP SIGNATURE-----\r\n"},"ember":{"edition":"octane"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Ember Permissions\n\n[![NPM Version](https://badge.fury.io/js/%40bagaar%2Fember-permissions.svg)](https://badge.fury.io/js/%40bagaar%2Fember-permissions) [![Build Status](https://travis-ci.com/Bagaar/ember-permissions.svg?branch=master)](https://travis-ci.com/Bagaar/ember-permissions) [![Ember Observer Score](https://emberobserver.com/badges/-bagaar-ember-permissions.svg)](https://emberobserver.com/addons/@bagaar/ember-permissions) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)\n\nPermission management for Ember applications.\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Support](#support)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Public API](#public-api)\n- [Contributing](#contributing)\n- [License](#license)\n- [Maintenance](#maintenance)\n\n## Introduction\n\n`@bagaar/ember-permissions` is an addon that allows you to **manage and validate permissions** for the current user session. It also allows you to **define required permissions per route** so you can protect specific parts of your application. Instead of using a mixin to protect your routes, the addon allows you to define the required permissions per route in a single file. Whenever a transition occurs that is not allowed, a specific event is triggered so you can decide how to handle the denied transition.\n\n## Support\n\n**`@bagaar/ember-permissions` supports Ember v3.12 and up.**\n\nFor a version that is compatible with older versions of Ember, check out the [v0.X](https://github.com/Bagaar/ember-permissions/tree/v0.X) branch.\n\n## Installation\n\n```shell\nember install @bagaar/ember-permissions\n```\n\n## Usage\n\n### 1\\. Setting up User Session Permissions\n\nFirst, we need to let the `permissions` service know which permissions are available for the current user session. In the example below, we're using an additional service to request the permissions from a server API. Afterwards, we pass along the permissions to the `permissions` service via the [`setPermissions`](#setpermissions) method.\n\n```javascript\n// app/routes/application.js\n\nimport Route from '@ember/routing/route'\nimport { inject as service } from '@ember/service'\n\nexport default class ApplicationRoute extends Route {\n  @service('api') apiService\n  @service('permissions') permissionsService\n  \n  async beforeModel () {\n    const permissions = await this.apiService.request('/permissions')\n    \n    this.permissionsService.setPermissions(permissions)\n  }\n}\n```\n\nOnce the permissions are set, we can start checking their presence. In the example below, we use the [`has-permissions`](#has-permissions) helper to conditionally render a button based on the presence of a specific permission.\n\n```handlebars\n{{! app/templates/users/index.hbs }}\n\n{{#if (has-permissions \"delete-users\")}}\n  <button type=\"button\">\n    Delete User\n  </button>\n{{/if}}\n```\n\n> **NOTE:** If you need to validate permissions inside a JavaScript file, you can use the [`hasPermissions`](#haspermissions) method on the `permissions` service instead.\n\n### 2\\. Setting up Route Permissions\n\nStart off with defining the required permissions per route. You're free to define them where you want, as long as the format is the same as shown below.\n\n```javascript\n// app/route-permissions.js\n\nexport default {\n  'users.index': ['view-users'],\n  'users.create': ['create-users'],\n  'users.edit': ['edit-users']\n}\n```\n\nNext, edit the `application` route from step 1 as follows:\n\n1. Use the [`setRoutePermissions`](#setroutepermissions) method to pass along the required permissions per route to the `permissions` service.\n2. Handle the [`route-access-denied`](#route-access-denied) event to determine what to do when a transition is denied.\n3. Call [`enableRouteValidation`](#enableroutevalidation).\n\n```javascript\n// app/routes/application.js\n\nimport { addListener } from '@ember/object/events'\nimport Route from '@ember/routing/route'\nimport { inject as service } from '@ember/service'\nimport routePermissions from 'app-name/route-permissions'\n\nexport default class ApplicationRoute extends Route {\n  @service('api') apiService\n  @service('permissions') permissionsService\n  \n  async beforeModel () {\n    const permissions = await this.apiService.request('/permissions')\n    \n    this.permissionsService.setPermissions(permissions)\n    this.permissionsService.setRoutePermissions(routePermissions)\n    \n    addListener(this.permissionsService, 'route-access-denied', () => {\n      // Handle the 'route-access-denied' event.\n      // E.g. redirect to a generic error route.\n      this.transitionTo('error', { error: 'route-access-denied' })\n    })\n\n    this.permissionsService.enableRouteValidation()\n  }\n}\n```\n\nNow each transition will be validated based on the required permissions per route. If a transition is not allowed the [`route-access-denied`](#route-access-denied) event will be triggered.\n\nSince the required permissions per route are now set, we can start checking if routes can be accessed. In the example below, we use the [`can-access-route`](#can-access-route) helper to do so.\n\n```handlebars\n{{! app/templates/components/menu.hbs }}\n\n{{#if (can-access-route \"users.index\")}}\n  <li>\n    {{#link-to \"users.index\"}}\n      Users\n    {{/link-to}}\n  </li>\n{{/if}}\n```\n\n> **NOTE:** If you need to validate if a route can be accessed inside a JavaScript file, you can use the [`canAccessRoute`](#canaccessroute) method on the `permissions` service instead.\n\n## Public API\n\n### Permissions Service\n\n#### Methods\n\n##### setPermissions\n\nAllows you to set the permissions for the current user session.\n\n###### Arguments\n\nAn array of permissions.\n\n###### Returns\n\n/\n\n###### Example\n\n```javascript\npermissionsService.setPermissions([\n  'view-users',\n  'create-users',\n  'edit-users'\n])\n```\n\n##### setRoutePermissions\n\nAllows you to set the required permissions per route.\n\n###### Arguments\n\nAn object of which the keys are route names and the values are arrays of required permissions.\n\n###### Returns\n\n/\n\n###### Example\n\n```javascript\npermissionsService.setRoutePermissions({\n  'users.index': ['view-users'],\n  'users.create': ['create-users'],\n  'users.edit': ['edit-users']\n})\n```\n\n##### hasPermissions\n\nChecks if all the provided permissions are available for the current user session.\n\n###### Arguments\n\nSeparate permissions OR an array of permissions.\n\n###### Returns\n\nReturns `true` if all the provided permissions are available for the current user session, `false` if otherwise.\n\n###### Example\n\n```javascript\n// As separate permissions.\npermissionsService.hasPermissions(\n  'view-users',\n  'create-users',\n  'edit-users'\n)\n\n// As an array of permissions.\npermissionsService.hasPermissions([\n  'view-users',\n  'create-users',\n  'edit-users'\n])\n```\n\n##### canAccessRoute\n\nChecks if the provided route can be accessed.\n\n###### Arguments\n\nA route's name.\n\n###### Returns\n\nReturns `true` if the provided route can be accessed, `false` if otherwise.\n\n###### Example\n\n```javascript\npermissionsService.canAccessRoute('users.index')\n```\n\n##### enableRouteValidation\n\nThis will tell the service that it should start validating each transition and confirm that it's allowed based on the required permissions per route. If a transition is not allowed the [`route-access-denied`](#route-access-denied) event will be triggered.\n\n###### Arguments\n\n/\n\n###### Returns\n\n/\n\n###### Example\n\n```javascript\npermissionsService.enableRouteValidation()\n```\n\n#### Events\n\n##### route-access-denied\n\nTriggered when a transition occurs that is not allowed.\n\n###### Parameters\n\nThe denied transition.\n\n###### Example\n\n```javascript\naddListener(permissionsService, 'route-access-denied', ( /* deniedTransition */ ) => {\n  // Handle the 'route-access-denied' event.\n  // E.g. redirect to a generic error route.\n  routerService.transitionTo('error', { error: 'route-access-denied' })\n})\n```\n\n--------------------------------------------------------------------------------\n\n### Helpers\n\n#### has-permissions\n\nChecks if all the provided permissions are available for the current user session.\n\n###### Arguments\n\nSeparate permissions.\n\n###### Returns\n\nReturns `true` if all the provided permissions are available for the current user session, `false` if otherwise.\n\n###### Example\n\n```handlebars\n{{has-permissions \"view-users\" \"create-users\" \"edit-users\"}}\n```\n\n#### can-access-route\n\nChecks if the provided route can be accessed.\n\n###### Arguments\n\nA route's name.\n\n###### Returns\n\nReturns `true` if the provided route can be accessed, `false` if otherwise.\n\n###### Example\n\n```handlebars\n{{can-access-route \"users.index\"}}\n```\n\n## Contributing\n\nSee the [Contributing](./CONTRIBUTING.md) guide for details.\n\n## License\n\nThis project is licensed under the [MIT License](./LICENSE.md).\n\n## Maintenance\n\n**`@bagaar/ember-permissions` is built and maintained by [Bagaar](https://bagaar.be).**\n\n![Bagaar Logo](https://bagaar.be/hubfs/logo-bagaar-black.svg)\n","engines":{"node":"10.* || >= 12"},"gitHead":"8438a0aee0aaa14042e57b84bcdb8ec1d211be92","scripts":{"lint":"npm-run-all --aggregate-output --continue-on-error --parallel lint:*","test":"npm-run-all lint:* test:*","build":"ember build --environment=production","start":"ember serve","lint:js":"eslint .","release":"standard-version","lint:hbs":"ember-template-lint .","format:js":"prettier-standard './**/*.js'","test:ember":"ember test","test:ember-compatibility":"ember try:each"},"_npmUser":{"name":"bertdeblock","email":"bert@bagaar.be"},"repository":{"url":"git+https://github.com/Bagaar/ember-permissions.git","type":"git"},"_npmVersion":"6.13.4","description":"Permission management for Ember applications.","directories":{"doc":"doc","test":"tests"},"ember-addon":{"configPath":"tests/dummy/config"},"lint-staged":{"*.js":["prettier-standard","eslint --fix"]},"_nodeVersion":"12.16.1","dependencies":{"ember-cli-babel":"^7.18.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^4.2.5","eslint":"^6.8.0","ember-cli":"~3.17.0","ember-try":"^1.4.0","loader.js":"^4.7.0","qunit-dom":"^1.1.0","ember-qunit":"^4.6.0","lint-staged":"^10.1.7","npm-run-all":"^4.1.5","babel-eslint":"^10.1.0","ember-source":"~3.17.0","ember-cli-sri":"^2.1.1","ember-resolver":"^8.0.0","ember-cli-uglify":"^3.0.0","standard-version":"^7.1.0","@glimmer/tracking":"^1.0.0","ember-auto-import":"^1.5.3","prettier-standard":"^16.3.0","@glimmer/component":"^1.0.0","broccoli-asset-rev":"^3.0.0","ember-cli-htmlbars":"^4.2.3","eslint-plugin-node":"^11.0.0","ember-template-lint":"^2.4.0","eslint-plugin-ember":"^8.4.0","ember-load-initializers":"^2.1.1","@ember/optional-features":"^1.3.0","ember-source-channel-url":"^2.0.1","ember-cli-dependency-checker":"^3.2.0","ember-cli-inject-live-reload":"^2.0.2","ember-maybe-import-regenerator":"^0.1.6","ember-export-application-global":"^2.0.1","ember-disable-prototype-extensions":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_1.0.0-beta.0_1587890815244_0.9487607896132559","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@bagaar/ember-permissions","version":"1.0.0","keywords":["bagaar","ember","ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@1.0.0","maintainers":[{"name":"bertdeblock","email":"bert@bagaar.be"}],"homepage":"https://github.com/Bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/Bagaar/ember-permissions/issues"},"dist":{"shasum":"638b538ae6313c03af20ad84ef13176a48d094f7","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-1.0.0.tgz","fileCount":15,"integrity":"sha512-KvznC2+/l95xDaYhikY7t/QnvXwSJUakVz5eiMatZlSeApViGSxypq+XvVbTNZybZHpjLEmk1kkX7RdIiGWuow==","signatures":[{"sig":"MEUCIQDvjd6jeL4KSmkD0hZuZqNhVVF6CXQMBkc1+SivBr9F6QIgHOKm98OWyzBA71tfh3BxobosZk3Z0v6wpUSd9i/zt0o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20728},"ember":{"edition":"octane"},"engines":{"node":"12.* || 14.* || >= 16"},"gitHead":"8a3fb7593d93d8fd37e30223a017f9198a4ea0a6","scripts":{"lint":"npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"","test":"npm-run-all lint test:*","build":"ember build --environment=production","start":"ember serve","lint:js":"eslint . --cache","prepare":"husky install","release":"standard-version","lint:fix":"npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix","lint:hbs":"ember-template-lint .","test:ember":"ember test","lint:js:fix":"eslint . --fix","lint:hbs:fix":"ember-template-lint . --fix","test:ember-compatibility":"ember try:each"},"_npmUser":{"name":"bertdeblock","email":"bert@bagaar.be"},"repository":{"url":"git+https://github.com/Bagaar/ember-permissions.git","type":"git"},"_npmVersion":"7.6.1","description":"Permission management for Ember applications.","directories":{"doc":"doc","test":"tests"},"ember-addon":{"configPath":"tests/dummy/config"},"_nodeVersion":"14.16.0","dependencies":{"ember-cli-babel":"^7.26.6"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.2","qunit":"^2.17.2","eslint":"^7.32.0","webpack":"^5.53.0","prettier":"^2.4.1","ember-cli":"~3.28.0","ember-try":"^1.4.0","loader.js":"^4.7.0","qunit-dom":"^2.0.0","ember-qunit":"^5.1.4","npm-run-all":"^4.1.5","babel-eslint":"^10.1.0","ember-source":"~3.28.0","ember-cli-sri":"^2.1.1","ember-resolver":"^8.0.3","@commitlint/cli":"^13.1.0","ember-cli-terser":"^4.0.2","ember-page-title":"^6.2.2","standard-version":"^9.1.0","@glimmer/tracking":"^1.0.4","ember-auto-import":"^2.2.0","@glimmer/component":"^1.0.4","broccoli-asset-rev":"^3.0.0","ember-cli-htmlbars":"^5.7.1","eslint-plugin-node":"^11.1.0","@ember/test-helpers":"^2.4.2","ember-template-lint":"^3.7.0","eslint-plugin-ember":"^10.5.5","eslint-plugin-qunit":"^6.2.0","@embroider/test-setup":"^0.44.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","ember-load-initializers":"^2.1.2","@ember/optional-features":"^2.0.0","ember-source-channel-url":"^3.0.0","ember-cli-dependency-checker":"^3.2.0","ember-cli-inject-live-reload":"^2.1.0","ember-maybe-import-regenerator":"^1.0.0","@commitlint/config-conventional":"^13.1.0","ember-export-application-global":"^2.0.1","ember-disable-prototype-extensions":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_1.0.0_1632305302351_0.5234242665383666","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@bagaar/ember-permissions","version":"2.0.0","keywords":["bagaar","ember","ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@2.0.0","maintainers":[{"name":"bertdeblock","email":"bert@bagaar.be"}],"homepage":"https://github.com/Bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/Bagaar/ember-permissions/issues"},"dist":{"shasum":"bb7e978014a28bd4162b16c6b9989a25d9dc29f0","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-2.0.0.tgz","fileCount":14,"integrity":"sha512-u1Y3jyCpDIzXY5fHclA1IAxKU9H7jibUJkktHgvm1w5eoKwfYgtgEfCkiSoyApqCjEkunTKJEIvr9QjaNLeFzg==","signatures":[{"sig":"MEQCIGlntoHmMY/ifvWYX0wfY7fSb5Fu5qzDvH49ZFEGOZ3HAiAXz7jr5bukZsdDtxhDKt9otllf8RLweyxKjBON8V2wnw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhk7GyCRA9TVsSAnZWagAA5VgQAIPqYADCrwnJeYYJHZhy\nO0UGlYSZejPgZ8LjDp6lzHBRaxf5FYFX1fXSr+batVsG7D7YWld6rmdg+7tj\nk5PCz8JxVSJjLE84QLYP3V+yhqNeOrDjCH39MqBUYNN69SainZF1NI9D32bW\n55ufOz/KbQaeSutlRluh2AJUH5ci6AUNmlRvqUgPjV1hv/LL9OtVK+Q7cfol\nYuJzeozVhz/33HSy+OSjpIi2mX8vER2QCSE9NiT+KDRqqlA0xkymwqoRjcZj\nrveiH1Suu7ttnJ4mrc1sdMUwTGXgrlcq9EKwZdLXPqqEYb36S6LpNXvpyocg\nSKZZ/Ug2TQZklESp/Kgsmr3NVrFn2CkIiIWrY2ccIm+dyCcjq/SiBrd1DK5f\na3ztKTQHpshne+WAsayQ1F5ps8/c+bkpNH4r4h4RAVvPjRdy2iBkBdrnjKJC\nCA1tPJWReF+lXtOvl6pGqnj2cajjJxBFUaTZ5Z3ragch77S1WJdhHpUN9hNn\nC2bmY8UoD95i3c84V31g0HxSj93Kx5yCLMt0y3mfuQTuk6kFTbunYY4kAazH\nnBI1SpluiO3SUKk/rQtmNdJRVIngKz+OuZuZ6EAknmX7E33Ulu5ZXmG/m+7q\n3XU/nLJD8c35ZFUTr8WN47x11hOUSyweavX2bxqn2Xn7emlbWqa1t2fgTc8a\nQQQw\r\n=HSvD\r\n-----END PGP SIGNATURE-----\r\n"},"ember":{"edition":"octane"},"volta":{"node":"12.22.7","yarn":"1.22.17"},"engines":{"node":"12.* || 14.* || >= 16"},"gitHead":"4d53c3d1089e30ba2c5ba4e64f804b64f76ef17e","scripts":{"lint":"npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"","test":"npm-run-all lint test:*","build":"ember build --environment=production","start":"ember serve","lint:js":"eslint . --cache","prepare":"husky install","release":"standard-version","lint:fix":"npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix","lint:hbs":"ember-template-lint .","test:ember":"ember test","lint:js:fix":"eslint . --fix","lint:hbs:fix":"ember-template-lint . --fix","test:ember-compatibility":"ember try:each"},"_npmUser":{"name":"bertdeblock","email":"bert@bagaar.be"},"repository":{"url":"git+https://github.com/Bagaar/ember-permissions.git","type":"git"},"_npmVersion":"7.6.1","description":"Permission management for Ember applications.","directories":{"doc":"doc","test":"tests"},"ember-addon":{"configPath":"tests/dummy/config"},"_nodeVersion":"12.22.7","dependencies":{"ember-cli-babel":"^7.26.6","@glimmer/tracking":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","qunit":"^2.17.2","eslint":"^7.32.0","webpack":"^5.64.1","prettier":"^2.4.1","ember-cli":"~3.28.4","ember-try":"^2.0.0","loader.js":"^4.7.0","qunit-dom":"^2.0.0","ember-qunit":"^5.1.5","npm-run-all":"^4.1.5","babel-eslint":"^10.1.0","ember-source":"~3.28.4","ember-cli-sri":"^2.1.1","ember-resolver":"^8.0.3","@commitlint/cli":"^14.1.0","ember-cli-terser":"^4.0.2","ember-page-title":"^7.0.0","standard-version":"^9.3.2","ember-auto-import":"^2.2.4","@glimmer/component":"^1.0.4","broccoli-asset-rev":"^3.0.0","ember-cli-htmlbars":"^6.0.0","eslint-plugin-node":"^11.1.0","@ember/test-helpers":"^2.6.0","ember-template-lint":"^3.13.0","eslint-plugin-ember":"^10.5.7","eslint-plugin-qunit":"^7.1.0","@embroider/test-setup":"^0.47.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","ember-load-initializers":"^2.1.2","@ember/optional-features":"^2.0.0","ember-source-channel-url":"^3.0.0","ember-cli-dependency-checker":"^3.2.0","ember-cli-inject-live-reload":"^2.1.0","ember-maybe-import-regenerator":"^1.0.0","@commitlint/config-conventional":"^14.1.0","ember-export-application-global":"^2.0.1","ember-disable-prototype-extensions":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_2.0.0_1637069234319_0.1057208943213257","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@bagaar/ember-permissions","version":"2.0.1","keywords":["bagaar","ember","ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@2.0.1","maintainers":[{"name":"bertdeblock","email":"bert@bagaar.be"}],"homepage":"https://github.com/Bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/Bagaar/ember-permissions/issues"},"dist":{"shasum":"9329b18406dd2109fcaedc1ca70bad0991ffefe6","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-2.0.1.tgz","fileCount":14,"integrity":"sha512-xa71lKpj8xDrCxNMKDCx6lYFBxR9Ed/ZR57notTKtdTuI+nDCG1nx+o/AUcPGGwnd7ePsJLarmQ8oAzh8KtU7Q==","signatures":[{"sig":"MEUCIGCHVhpvVzlf/00QAVoEKhSczJmEPAnonuJ6ixyjsBTnAiEA7Z0mg5aBCUQ72vIExZs5O5CvrIt8X8Cw7cWnxkJIzxE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsl+DCRA9TVsSAnZWagAAAl8QAIi8SRQJ1qvC/EtkPS41\nS2D9wGA4tJqVhheHed+Yg7OEUAZdUPkw0WFm2TgbTHQqm4bztPZeoqf9sddG\nUArUUN1GFEY+n832jLgSbp9rfu67Lptl0kkrIq4qYCpOKNLp96sF7jwJ/7iV\nfVvWU6BLvjEw2dvcJvJOnRJvmcq35aOx4+1qHPTIdTGUkIlRdDxmyuOOW2wh\nDYISctmftdWeU/3SJA5J/K3WMsCzuESX7Qkz5I+3Goy4D+K+iv7cAK2llVV+\nzFuDK412lLt2pMoRKTNTfSi9hgHOIhV7Y6+cwgFKX60mBbmO7v6Uz1MQR8SL\nbbczwy/Vz+qawUTLL3vCcBHhibXz/RTbk5/vxEGaYPtseUDlWDKJubMhBQF4\ng5CsNYrXWtiwmJNtV9DAlcAOx3eselzOWVBrXuJ2BZMynkYmP4FVeLIMb0ix\niv7P1l4tO8C8geByoOMtU88v5fJwTWo4pMKT7JUvDDiCCP4HespNEEvR5Q9b\nD0hXNxGjTVtpW+5KLvJkNPVatEgLw02BSVMKmQroKz+n9F7CRWsaSX3lbHGz\nLrqfvaB9VI3AXeo7zl2yvr95iRwSoASYQvGHW5ov2Im8lIYkUG1foWeRf0p3\nEW/j/N7GkRvmDOo+Ac7DoCyUDSfIMbfftrpu328+ooxUZCuKZY/lSFCaWxb4\nDRPZ\r\n=UQ9C\r\n-----END PGP SIGNATURE-----\r\n"},"ember":{"edition":"octane"},"volta":{"node":"12.22.7","yarn":"1.22.17"},"engines":{"node":"12.* || 14.* || >= 16"},"gitHead":"057cd17eedb4dde7b26be7065ce07a1756dd1b8c","scripts":{"lint":"npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"","test":"npm-run-all lint test:*","build":"ember build --environment=production","start":"ember serve","lint:js":"eslint . --cache","prepare":"husky install","release":"standard-version","lint:fix":"npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix","lint:hbs":"ember-template-lint .","test:ember":"ember test","lint:js:fix":"eslint . --fix","lint:hbs:fix":"ember-template-lint . --fix","test:ember-compatibility":"ember try:each"},"_npmUser":{"name":"bertdeblock","email":"bert@bagaar.be"},"repository":{"url":"git+https://github.com/Bagaar/ember-permissions.git","type":"git"},"_npmVersion":"7.6.1","description":"Permission management for Ember applications.","directories":{"doc":"doc","test":"tests"},"ember-addon":{"configPath":"tests/dummy/config"},"_nodeVersion":"12.22.7","dependencies":{"ember-cli-babel":"^7.26.6","@glimmer/tracking":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","qunit":"^2.17.2","eslint":"^7.32.0","webpack":"^5.64.1","prettier":"^2.4.1","ember-cli":"~3.28.4","ember-try":"^2.0.0","loader.js":"^4.7.0","qunit-dom":"^2.0.0","ember-qunit":"^5.1.5","npm-run-all":"^4.1.5","babel-eslint":"^10.1.0","ember-source":"~3.28.4","ember-cli-sri":"^2.1.1","ember-resolver":"^8.0.3","@commitlint/cli":"^15.0.0","ember-cli-terser":"^4.0.2","ember-page-title":"^7.0.0","standard-version":"^9.3.2","ember-auto-import":"^2.2.4","@glimmer/component":"^1.0.4","broccoli-asset-rev":"^3.0.0","ember-cli-htmlbars":"^6.0.0","eslint-plugin-node":"^11.1.0","@ember/test-helpers":"^2.6.0","ember-template-lint":"^3.13.0","eslint-plugin-ember":"^10.5.7","eslint-plugin-qunit":"^7.1.0","@embroider/test-setup":"^0.48.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","ember-load-initializers":"^2.1.2","@ember/optional-features":"^2.0.0","ember-source-channel-url":"^3.0.0","ember-cli-dependency-checker":"^3.2.0","ember-cli-inject-live-reload":"^2.1.0","ember-maybe-import-regenerator":"^1.0.0","@commitlint/config-conventional":"^15.0.0","ember-export-application-global":"^2.0.1","ember-disable-prototype-extensions":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_2.0.1_1639079810848_0.37799150241399837","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@bagaar/ember-permissions","version":"3.0.0","keywords":["bagaar","ember","ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@3.0.0","maintainers":[{"name":"bertdeblock","email":"bert.deblock@bagaar.be"}],"homepage":"https://github.com/Bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/Bagaar/ember-permissions/issues"},"dist":{"shasum":"4de86d953dafad9659dd89a2a6cb0ef17bdacefd","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-3.0.0.tgz","fileCount":14,"integrity":"sha512-+8R2dzeJKOKLyV8eXPDWOnRdhvDyyrLyCz8Tz1J3wA6+iuYCsWNKheDuL7TnuUNFt0WJdcehFT7vxFnpm103mA==","signatures":[{"sig":"MEUCIQD+uK/tyz9MYTklxzjzBHyyEfWQaoq6CNoJepx4T5U7eQIgHYuqPYFSLnHna4mrG1yXvherMZ2lGKybZmunWKy+7ck=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitFc/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4iQ//WpoOlaK4im4wzhDFKnG3ltFIQ+FqNnvCEjtBABD3N3ijNjFW\r\n9ajaOxEPJ5eS3DKzDkP/BwHeSqW4JhNjqC3u2seqoZ3rJZV+r38NkF8/txXF\r\nryGpP81YIAiFB9cIyHLn1pe0j0vfK364KMuwPv3rH6GeqCrDz2XpFi225wWP\r\nJ/fcP0x8GFUnZXGNIeEsbP1/yiBlOQGtK0yAYVEPi8h9q5HYmkgJpEah2jH/\r\n76G3QV/wzuX17IsrTbzn/plGr3dY9ZBDCjtDB5YO622vNkJaxaPVm9xyxqgx\r\nGoiOj1EbjDxSpCawk6puqav5s6JwTQKi9MO6QZXNjMKUzugk87QLl5pzyeth\r\nX1dPZfUsZHGUgsFOPJena0l0aBymv5teNxZ/4Q9Md6R4OUhhR7E4dyqkkZNj\r\nr5JV/+2lfqYreSSnhMZt16aNVCf7BSP5UDxokxMIbXmJew4VbFjmfDj6UWoo\r\nPwbSmAIPCAW2Bz5YKxRZG8gLZXyj9vytRLre8susQQXRTdPOWxg0x7wJJIWe\r\nyARHfpqmVNGum0rmpzSJrKfpxv/XDoOiQgEJWqMy4fXekXnPrh3jJ/6lYQfz\r\nHv4Vd0vbBIK+JE0r64OE4MbxayDeSjveUvZ4l5I7E+Ow25PxyJVCeruaR0+O\r\nhtXWAp7U2HyFhTSOtiZF7w+2JlJ0+hl6oVU=\r\n=egkY\r\n-----END PGP SIGNATURE-----\r\n"},"ember":{"edition":"octane"},"volta":{"node":"14.19.3","yarn":"1.22.17"},"engines":{"node":"14.* || >= 16"},"gitHead":"3b30a68503426170748b20ad8f8618d271672929","scripts":{"lint":"npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"","test":"npm-run-all lint test:*","build":"ember build --environment=production","start":"ember serve","lint:js":"eslint . --cache","prepare":"husky install","release":"standard-version","lint:fix":"npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix","lint:hbs":"ember-template-lint .","test:ember":"ember test","lint:js:fix":"eslint . --fix","lint:hbs:fix":"ember-template-lint . --fix","test:ember-compatibility":"ember try:each"},"_npmUser":{"name":"bertdeblock","email":"bert.deblock@bagaar.be"},"repository":{"url":"git+https://github.com/Bagaar/ember-permissions.git","type":"git"},"_npmVersion":"6.14.17","description":"Permission management for Ember applications.","directories":{"doc":"doc","test":"tests"},"ember-addon":{"configPath":"tests/dummy/config"},"_nodeVersion":"14.19.3","dependencies":{"ember-cli-babel":"^7.26.11","@glimmer/tracking":"^1.1.2"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.1","qunit":"^2.19.1","eslint":"^7.32.0","webpack":"^5.72.1","prettier":"^2.6.2","ember-cli":"~4.4.0","ember-try":"^2.0.0","loader.js":"^4.7.0","qunit-dom":"^2.0.0","ember-qunit":"^5.1.5","npm-run-all":"^4.1.5","babel-eslint":"^10.1.0","ember-source":"~4.4.0","ember-cli-sri":"^2.1.1","ember-resolver":"^8.0.3","@commitlint/cli":"^17.0.2","ember-cli-terser":"^4.0.2","ember-page-title":"^7.0.0","standard-version":"^9.5.0","ember-auto-import":"^2.4.1","@glimmer/component":"^1.1.2","broccoli-asset-rev":"^3.0.0","ember-cli-htmlbars":"^6.0.1","eslint-plugin-node":"^11.1.0","@ember/test-helpers":"^2.7.0","ember-template-lint":"^4.8.0","eslint-plugin-ember":"^10.6.1","eslint-plugin-qunit":"^7.3.0","@embroider/test-setup":"^1.6.0","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","ember-load-initializers":"^2.1.2","@ember/optional-features":"^2.0.0","ember-source-channel-url":"^3.0.0","ember-cli-dependency-checker":"^3.3.1","ember-cli-inject-live-reload":"^2.1.0","@commitlint/config-conventional":"^17.0.2","ember-export-application-global":"^2.0.1","ember-disable-prototype-extensions":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_3.0.0_1655985983547_0.3650325614085297","host":"s3://npm-registry-packages"}},"4.0.0":{"name":"@bagaar/ember-permissions","version":"4.0.0","keywords":["bagaar","ember","ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@4.0.0","maintainers":[{"name":"bertdeblock","email":"bert.deblock@bagaar.be"}],"homepage":"https://github.com/Bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/Bagaar/ember-permissions/issues"},"dist":{"shasum":"ff25d69b171b1a579356400b13eb137e4d00d9e3","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-4.0.0.tgz","fileCount":14,"integrity":"sha512-q32Pk1q6Tpj0ylvvX4dWpmM4pxWwyto+N7dawdd7gHQx70n1WhSlLHidcqtZJGQ04q/5fvZTfSQ0oAfei/3aCw==","signatures":[{"sig":"MEUCIQCS5hzS2KF/J4G2vUk5Uxeh8rG1a5Aub+kE7eZDqYV56QIgdOM8LXHkMztlUN6ad662LqwSNgvo3rq6tZ+hUiMC+hQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjtAENACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrqZBAAmgCJ5GJuFnyVPyhNgxgCwISPGuB3ArAeTAhJN2vAhQgnLMtt\r\n8w3FUxqjjhyJqKoinYsuMNcWdWzdhwnMgsMiAuA4ojh2ioKfEza8IC/o7PZ+\r\nGgZyAQF7bGUZaPJ6fRqSIVKjmwUmvYfp4LLvHySjMJiQm57AZSEts4k6NudS\r\n/aMCQfqiOOyiinx22hjsvpQmYhM/e0EFR0bstY917YYRG+lmFiB1bDcovKoi\r\n0ZGy3bXEK2Mx2lKBu2EbdcoFGFKOUfJeurSztSyVT0QZoICbM3QyQdIAIhe0\r\niCLR7jp2+egTZvDO8qew8y1WNkt5NDFhpERvZXVtQZm/O1mEvv7tP8eVukXo\r\n4IDlPdGHwpRQVbgGzmvKCoMfHStu9f51XTnaljRgw6EKuanKJ0hykQvL+vma\r\nsBh39JRCkkuqZzdWHneBKHUUpa/wIcDpzRNc0O0WG1kCNutBE86cha/cIuy3\r\njHg6zf7xhYEjcK4QcIuGGrSYKU3erFxuCmZ4Stxa6uuJNH90xs3IDVXYHABh\r\n6EbaNVqe6PNlXOPsJl8rfyPeFv39XE4x/7j/JKj+Mg0zdAYFFAuoBmGP4MkR\r\nxJcWJoxQBoES40x88mQojoUGLXoyP0xEev8Pz54eMyFUb27COP/j028CGol3\r\nWXJqOhjBm3Lw/uQNQt5b0OVAeyuglfvHYpI=\r\n=pHfc\r\n-----END PGP SIGNATURE-----\r\n"},"ember":{"edition":"octane"},"volta":{"node":"14.19.3","yarn":"1.22.17"},"engines":{"node":"14.* || 16.* || >= 18"},"gitHead":"cc7ca4e005c907f11ef3fe1a60dc5d4f2141a659","scripts":{"lint":"concurrently \"npm:lint:*(!fix)\" --names \"lint:\"","test":"concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\"","build":"ember build --environment=production","start":"ember serve","lint:js":"eslint . --cache","prepack":"ember ts:precompile","prepare":"husky install","release":"standard-version","lint:fix":"concurrently \"npm:lint:*:fix\" --names \"fix:\"","lint:hbs":"ember-template-lint .","postpack":"ember ts:clean","lint:types":"tsc --noEmit","test:ember":"ember test","lint:js:fix":"eslint . --fix","lint:hbs:fix":"ember-template-lint . --fix","test:ember-compatibility":"ember try:each"},"_npmUser":{"name":"bertdeblock","email":"bert.deblock@bagaar.be"},"repository":{"url":"git+https://github.com/Bagaar/ember-permissions.git","type":"git"},"_npmVersion":"6.14.17","description":"Permission management for Ember applications.","directories":{"doc":"doc","test":"tests"},"ember-addon":{"configPath":"tests/dummy/config"},"_nodeVersion":"14.19.3","dependencies":{"ember-cli-babel":"^7.26.11","@glimmer/tracking":"^1.1.2","ember-cli-typescript":"^5.2.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","qunit":"^2.19.3","eslint":"^7.32.0","webpack":"^5.75.0","prettier":"^2.8.1","ember-cli":"~4.9.2","ember-try":"^2.0.0","loader.js":"^4.7.0","qunit-dom":"^2.0.0","typescript":"^4.9.4","@types/rsvp":"^4.0.4","ember-qunit":"^6.1.1","@types/ember":"^4.0.3","@types/qunit":"^2.19.3","concurrently":"^7.6.0","ember-source":"~4.9.1","ember-cli-sri":"^2.1.1","ember-resolver":"^9.0.1","@commitlint/cli":"^17.3.0","@tsconfig/ember":"^2.0.0","ember-cli-terser":"^4.0.2","ember-page-title":"^7.0.0","standard-version":"^9.5.0","ember-auto-import":"^2.5.0","@glimmer/component":"^1.1.2","@types/ember-qunit":"^6.1.1","@types/ember__test":"^4.0.1","broccoli-asset-rev":"^3.0.0","ember-cli-htmlbars":"^6.1.1","eslint-plugin-node":"^11.1.0","@ember/test-helpers":"^2.9.3","@types/ember__array":"^4.0.3","@types/ember__debug":"^4.0.3","@types/ember__error":"^4.0.2","@types/ember__utils":"^4.0.2","ember-template-lint":"^5.3.0","eslint-plugin-ember":"^11.4.0","eslint-plugin-qunit":"^7.3.4","@types/ember__engine":"^4.0.4","@types/ember__object":"^4.0.5","@types/ember__string":"^3.0.10","@embroider/test-setup":"^2.0.2","@types/ember-resolver":"^9.0.0","@types/ember__routing":"^4.0.12","@types/ember__runloop":"^4.0.2","@types/ember__service":"^4.0.2","@types/ember__template":"^4.0.1","eslint-config-prettier":"^8.6.0","eslint-plugin-prettier":"^4.2.1","@types/ember__component":"^4.0.12","@types/ember__polyfills":"^4.0.1","ember-load-initializers":"^2.1.2","@ember/optional-features":"^2.0.0","@types/ember__controller":"^4.0.4","ember-source-channel-url":"^3.0.0","@types/ember__application":"^4.0.5","@types/ember__destroyable":"^4.0.1","@typescript-eslint/parser":"^5.48.0","@types/ember__test-helpers":"^2.9.1","ember-cli-dependency-checker":"^3.3.1","ember-cli-inject-live-reload":"^2.1.0","@commitlint/config-conventional":"^17.3.0","@typescript-eslint/eslint-plugin":"^5.48.0"},"peerDependencies":{"ember-source":"^3.28.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_4.0.0_1672741133261_0.01817678110955856","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@bagaar/ember-permissions","version":"5.0.0","keywords":["bagaar","ember","ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@5.0.0","maintainers":[{"name":"bertdeblock","email":"bert.deblock@bagaar.be"}],"homepage":"https://github.com/Bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/Bagaar/ember-permissions/issues"},"dist":{"shasum":"33d088b92254a3f7cc70b6bb68d2934620603910","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-5.0.0.tgz","fileCount":24,"integrity":"sha512-XG1QWXSd7AUVf6dApIFHbQly0GBEbvnTk/yXXGHTQFsQ8GFFhEl73oTv3oHGY/+F68KOgPu6lCHRyrntyqV6KA==","signatures":[{"sig":"MEQCIEk9obbVxehrj4uFZXhoKlYRjtN4LpuybRH+qXaQUIaqAiBJ29lz8XxCSduM/aYbWVd9yHOlVAx0rt6YQC3ogOPlFg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31719},"ember":{"edition":"octane"},"volta":{"node":"18.18.2","yarn":"1.22.19"},"engines":{"node":">= 18"},"gitHead":"579083160805473a7418b048fb9c9e614ed160ef","scripts":{"lint":"concurrently \"npm:lint:*(!fix)\" --names \"lint:\"","test":"concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\"","build":"ember build --environment=production","start":"ember serve","lint:js":"eslint . --cache","prepack":"tsc --project tsconfig.declarations.json","prepare":"husky install","release":"standard-version","lint:css":"stylelint \"**/*.css\"","lint:fix":"concurrently \"npm:lint:*:fix\" --names \"fix:\"","lint:hbs":"ember-template-lint .","postpack":"rimraf declarations","lint:types":"tsc --noEmit","test:ember":"ember test","lint:js:fix":"eslint . --fix","lint:css:fix":"concurrently \"npm:lint:css -- --fix\"","lint:hbs:fix":"ember-template-lint . --fix","test:ember-compatibility":"ember try:each"},"_npmUser":{"name":"bertdeblock","email":"bert.deblock@bagaar.be"},"repository":{"url":"git+https://github.com/Bagaar/ember-permissions.git","type":"git"},"_npmVersion":"9.8.1","description":"Permission management for Ember applications.","directories":{"doc":"doc","test":"tests"},"ember-addon":{"configPath":"tests/dummy/config"},"_nodeVersion":"18.18.2","dependencies":{"@babel/core":"^7.23.2","ember-cli-babel":"^8.2.0","@glimmer/tracking":"^1.1.2"},"typesVersions":{"*":{"*":["declarations/addon/*","declarations/addon/*/index.d.ts"],"test-support":["declarations/addon-test-support/index.d.ts"],"test-support/*":["declarations/addon-test-support/*","declarations/addon-test-support/*/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","qunit":"^2.20.0","eslint":"^8.53.0","rimraf":"^5.0.1","webpack":"^5.89.0","prettier":"^3.1.0","ember-cli":"~5.4.0","ember-try":"^3.0.0","loader.js":"^4.7.0","qunit-dom":"^3.0.0","stylelint":"^15.11.0","typescript":"^5.2.2","@types/rsvp":"^4.0.7","ember-qunit":"^8.0.2","@types/qunit":"^2.19.8","concurrently":"^8.2.2","ember-source":"~5.4.0","ember-cli-sri":"^2.1.1","ember-resolver":"^11.0.1","@commitlint/cli":"^18.4.1","@glint/template":"^1.2.1","@tsconfig/ember":"^3.0.2","eslint-plugin-n":"^16.3.1","ember-cli-terser":"^4.0.2","ember-page-title":"^8.1.0","standard-version":"^9.5.0","ember-auto-import":"^2.6.3","@glimmer/component":"^1.1.2","broccoli-asset-rev":"^3.0.0","ember-cli-htmlbars":"^6.3.0","stylelint-prettier":"^4.0.2","@ember/test-helpers":"^3.2.0","ember-cli-clean-css":"^3.0.0","ember-template-lint":"^5.12.0","eslint-plugin-ember":"^11.11.1","eslint-plugin-qunit":"^8.0.1","@embroider/test-setup":"^3.0.3","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","ember-load-initializers":"^2.1.2","@ember/optional-features":"^2.0.0","ember-source-channel-url":"^3.0.0","@typescript-eslint/parser":"^6.11.0","stylelint-config-standard":"^34.0.0","ember-cli-dependency-checker":"^3.3.2","ember-cli-inject-live-reload":"^2.1.0","@glint/environment-ember-loose":"^1.2.1","@commitlint/config-conventional":"^18.4.0","@typescript-eslint/eslint-plugin":"^6.11.0"},"peerDependencies":{"ember-source":"^4.8.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_5.0.0_1699967662237_0.2569740220401464","host":"s3://npm-registry-packages"}},"5.1.0":{"name":"@bagaar/ember-permissions","version":"5.1.0","keywords":["bagaar","ember","ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@5.1.0","maintainers":[{"name":"gvdp","email":"vdputteglenn@gmail.com"},{"name":"bertdeblock","email":"bert.deblock@bagaar.be"}],"homepage":"https://github.com/Bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/Bagaar/ember-permissions/issues"},"dist":{"shasum":"66f04940f008c6dfcd7f68ad90bf4f2853782d50","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-5.1.0.tgz","fileCount":27,"integrity":"sha512-pOcOgSGKW8NJgcmG57x8Apk1gTvlPvkRLL3mhfVyltZnEWE3jteVeZK07dHSvOLBy0L3ns+J/S/3QKp91iWtrg==","signatures":[{"sig":"MEYCIQDnrzUAU2I0gTHoyfCED6i4oWrPfT066UD0Q2HLc0x79AIhAOcU4OJdI89R0xt0z7OG52AXgh9CsQtPPqyVW08XYEDn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33375},"ember":{"edition":"octane"},"volta":{"node":"18.18.2","yarn":"1.22.19"},"engines":{"node":">= 18"},"gitHead":"8637b38bed8e4c2eb06aa00dc21381a88d3a03e0","scripts":{"lint":"concurrently \"npm:lint:*(!fix)\" --names \"lint:\"","test":"concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\"","build":"ember build --environment=production","start":"ember serve","lint:js":"eslint . --cache","prepack":"tsc --project tsconfig.declarations.json","prepare":"husky install","release":"standard-version","lint:css":"stylelint \"**/*.css\"","lint:fix":"concurrently \"npm:lint:*:fix\" --names \"fix:\"","lint:hbs":"ember-template-lint .","postpack":"rimraf declarations","lint:types":"tsc --noEmit","test:ember":"ember test","lint:js:fix":"eslint . --fix","lint:css:fix":"concurrently \"npm:lint:css -- --fix\"","lint:hbs:fix":"ember-template-lint . --fix","test:ember-compatibility":"ember try:each"},"_npmUser":{"name":"bertdeblock","email":"bert.deblock@bagaar.be"},"repository":{"url":"git+https://github.com/Bagaar/ember-permissions.git","type":"git"},"_npmVersion":"9.8.1","description":"Permission management for Ember applications.","directories":{"doc":"doc","test":"tests"},"ember-addon":{"configPath":"tests/dummy/config"},"_nodeVersion":"18.18.2","dependencies":{"@babel/core":"^7.23.2","ember-cli-babel":"^8.2.0","@glimmer/tracking":"^1.1.2"},"typesVersions":{"*":{"*":["declarations/addon/*","declarations/addon/*/index.d.ts"],"test-support":["declarations/addon-test-support/index.d.ts"],"test-support/*":["declarations/addon-test-support/*","declarations/addon-test-support/*/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"husky":"^8.0.3","qunit":"^2.20.0","eslint":"^8.53.0","rimraf":"^5.0.1","webpack":"^5.89.0","prettier":"^3.1.0","ember-cli":"~5.4.0","ember-try":"^3.0.0","loader.js":"^4.7.0","qunit-dom":"^3.0.0","stylelint":"^15.11.0","typescript":"^5.2.2","@types/rsvp":"^4.0.7","ember-qunit":"^8.0.2","@types/qunit":"^2.19.8","concurrently":"^8.2.2","ember-source":"~5.4.0","ember-cli-sri":"^2.1.1","ember-resolver":"^11.0.1","@commitlint/cli":"^18.4.1","@glint/template":"^1.2.1","@tsconfig/ember":"^3.0.2","eslint-plugin-n":"^16.3.1","ember-cli-terser":"^4.0.2","ember-page-title":"^8.1.0","standard-version":"^9.5.0","ember-auto-import":"^2.6.3","@glimmer/component":"^1.1.2","broccoli-asset-rev":"^3.0.0","ember-cli-htmlbars":"^6.3.0","stylelint-prettier":"^4.0.2","@ember/test-helpers":"^3.2.0","ember-cli-clean-css":"^3.0.0","ember-template-lint":"^5.12.0","eslint-plugin-ember":"^11.11.1","eslint-plugin-qunit":"^8.0.1","@embroider/test-setup":"^3.0.3","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","ember-load-initializers":"^2.1.2","@ember/optional-features":"^2.0.0","ember-source-channel-url":"^3.0.0","@typescript-eslint/parser":"^6.11.0","stylelint-config-standard":"^34.0.0","ember-cli-dependency-checker":"^3.3.2","ember-cli-inject-live-reload":"^2.1.0","@glint/environment-ember-loose":"^1.2.1","@commitlint/config-conventional":"^18.4.0","@typescript-eslint/eslint-plugin":"^6.11.0"},"peerDependencies":{"ember-source":"^4.8.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_5.1.0_1709565818415_0.8143293633317545","host":"s3://npm-registry-packages"}},"6.0.0":{"name":"@bagaar/ember-permissions","version":"6.0.0","keywords":["ember-addon","permissions"],"author":{"name":"Bagaar"},"license":"MIT","_id":"@bagaar/ember-permissions@6.0.0","maintainers":[{"name":"gvdp","email":"vdputteglenn@gmail.com"},{"name":"bertdeblock","email":"bert.deblock@bagaar.be"}],"homepage":"https://github.com/bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/bagaar/ember-permissions/issues"},"dist":{"shasum":"9b40bbd8e852939e593d0f0a891201ea82a8647d","tarball":"https://registry.npmjs.org/@bagaar/ember-permissions/-/ember-permissions-6.0.0.tgz","fileCount":33,"integrity":"sha512-bW3+YpbN7ZQGCc800xV+3MykHFPLj4uCwjkcY2PlyuDO7fYGG8rWXrUt42lst147nYX4jXXZocb5sVqA971VXQ==","signatures":[{"sig":"MEUCIGMwWGzsVrYjItU/X4o7YZ2hBYZiknB35OOR85tZ1RDNAiEA1lyijXG0R9q+ZJI5tcDbtL3dDu8r8shrYi4mwgTDAR4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44890},"ember":{"edition":"octane"},"volta":{"extends":"../package.json"},"exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.js"},"./addon-main.js":"./addon-main.cjs"},"gitHead":"cd3b4ceb4235090e43025dd653ff9c5bf4752058","scripts":{"lint":"concurrently 'npm:lint:*(!fix)' --names 'lint:'","test":"echo 'A v2 addon does not have tests, run tests in test-app'","build":"concurrently 'npm:build:*'","start":"concurrently 'npm:start:*'","lint:js":"eslint . --cache","prepack":"rollup --config","build:js":"rollup --config","lint:fix":"concurrently 'npm:lint:*:fix' --names 'fix:'","lint:hbs":"ember-template-lint . --no-error-on-unmatched-pattern","start:js":"rollup --config --watch --no-watch.clearScreen","lint:types":"glint","build:types":"glint --declaration","lint:js:fix":"eslint . --fix","start:types":"glint --declaration --watch","lint:hbs:fix":"ember-template-lint . --fix --no-error-on-unmatched-pattern"},"_npmUser":{"name":"bertdeblock","email":"bert.deblock@bagaar.be"},"release-it":{"git":{"tagName":"v${version}","commitMessage":"Release v${version}"},"github":{"release":true,"tokenRef":"GITHUB_TOKEN"},"plugins":{"@release-it-plugins/lerna-changelog":{"infile":"../CHANGELOG.md","launchEditor":false}}},"repository":{"url":"git+https://github.com/bagaar/ember-permissions.git","type":"git"},"_npmVersion":"9.4.0","description":"Permission management for Ember applications.","directories":{},"ember-addon":{"main":"addon-main.cjs","type":"addon","app-js":{"./services/permissions.js":"./dist/_app_/services/permissions.js","./helpers/has-permissions.js":"./dist/_app_/helpers/has-permissions.js","./helpers/can-access-route.js":"./dist/_app_/helpers/can-access-route.js","./helpers/has-some-permissions.js":"./dist/_app_/helpers/has-some-permissions.js"},"version":2},"_nodeVersion":"18.15.0","dependencies":{"decorator-transforms":"^1.0.1","@embroider/addon-shim":"^1.8.7"},"publishConfig":{"registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["declarations/*"]}},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","rollup":"^4.9.1","prettier":"^3.1.1","release-it":"^17.0.3","typescript":"^5.3.3","@babel/core":"^7.23.6","@glint/core":"^1.2.1","concurrently":"^8.2.2","ember-source":"~5.6.0","@babel/runtime":"^7.17.0","@glint/template":"^1.2.1","@tsconfig/ember":"^3.0.2","eslint-plugin-n":"^16.4.0","@glimmer/tracking":"^1.1.2","rollup-plugin-copy":"^3.5.0","ember-template-lint":"^5.13.0","eslint-plugin-ember":"^11.12.0","@embroider/addon-dev":"^4.1.0","@rollup/plugin-babel":"^6.0.4","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.14.0","@glint/environment-ember-loose":"^1.2.1","@typescript-eslint/eslint-plugin":"^6.14.0","@babel/plugin-transform-typescript":"^7.23.6","prettier-plugin-ember-template-tag":"^1.1.0","@release-it-plugins/lerna-changelog":"^6.0.0","babel-plugin-ember-template-compilation":"^2.2.1","@glint/environment-ember-template-imports":"^1.2.1"},"peerDependencies":{"ember-source":">= 4.8.0","@glimmer/tracking":">= 1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/ember-permissions_6.0.0_1709640381548_0.7418592222981222","host":"s3://npm-registry-packages"}}},"time":{"created":"2019-02-11T09:27:52.924Z","modified":"2024-06-12T13:23:28.826Z","0.1.0":"2019-02-11T09:27:53.204Z","0.2.0":"2019-05-07T15:20:13.703Z","1.0.0-beta.0":"2020-04-26T08:46:55.389Z","1.0.0":"2021-09-22T10:08:22.690Z","2.0.0":"2021-11-16T13:27:14.463Z","2.0.1":"2021-12-09T19:56:51.084Z","3.0.0":"2022-06-23T12:06:23.750Z","4.0.0":"2023-01-03T10:18:53.435Z","5.0.0":"2023-11-14T13:14:22.462Z","5.1.0":"2024-03-04T15:23:38.641Z","6.0.0":"2024-03-05T12:06:21.693Z"},"maintainers":[{"email":"vdputteglenn@gmail.com","name":"gvdp"}],"author":{"name":"Bagaar"},"repository":{"url":"git+https://github.com/bagaar/ember-permissions.git","type":"git"},"keywords":["ember-addon","permissions"],"license":"MIT","homepage":"https://github.com/bagaar/ember-permissions#readme","bugs":{"url":"https://github.com/bagaar/ember-permissions/issues"},"readme":"# @bagaar/ember-permissions\n\n[![CI](https://github.com/bagaar/ember-permissions/workflows/CI/badge.svg)](https://github.com/bagaar/ember-permissions/actions?query=workflow%3ACI)\n[![NPM Version](https://badge.fury.io/js/%40bagaar%2Fember-permissions.svg)](https://badge.fury.io/js/%40bagaar%2Fember-permissions)\n\nPermission management for Ember applications.\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Compatibility](#compatibility)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Public API](#public-api)\n  - [`permissions` Service](#permissions-service)\n    - [`setPermissions`](#setpermissions)\n    - [`setRoutePermissions`](#setroutepermissions)\n    - [`hasPermissions`](#haspermissions)\n    - [`hasSomePermissions`](#hassomepermissions)\n    - [`canAccessRoute`](#canaccessroute)\n    - [`enableRouteValidation`](#enableroutevalidation)\n    - [`addRouteAccessDeniedHandler`](#addrouteaccessdeniedhandler)\n    - [`removeRouteAccessDeniedHandler`](#removerouteaccessdeniedhandler)\n  - [Helpers](#helpers)\n    - [`has-permissions`](#has-permissions)\n    - [`has-some-permissions`](#has-some-permissions)\n    - [`can-access-route`](#can-access-route)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Introduction\n\n`@bagaar/ember-permissions` is an addon that allows you to **manage and validate permissions** for the current session. It also allows you to **define required permissions per route** so you can protect specific parts of your application. Instead of using a mixin to protect your routes, the addon allows you to define the required permissions per route in a single file. Specific handlers can be added to determine what needs to happen when a transition occurs that is denied.\n\n## Compatibility\n\n- Ember.js v4.8 or above\n- Embroider or ember-auto-import v2\n\n## Installation\n\n```shell\nember install @bagaar/ember-permissions\n```\n\n## Usage\n\n### 1\\. Setting up Session Permissions\n\nFirst, we need to let the `permissions` service know which permissions are available for the current session. In the example below, we're using an additional `api` service to request the permissions from an API. Afterwards, we pass along the permissions to the `permissions` service via the [`setPermissions`](#setpermissions) method.\n\n```javascript\n// app/routes/protected.js\n\nimport Route from '@ember/routing/route';\nimport { service } from '@ember/service';\n\nexport default class ProtectedRoute extends Route {\n  @service('api') apiService;\n  @service('permissions') permissionsService;\n\n  async beforeModel() {\n    const permissions = await this.apiService.request('/permissions');\n\n    this.permissionsService.setPermissions(permissions);\n  }\n}\n```\n\nOnce the permissions are set, we can start checking their presence. In the example below, we use the [`has-permissions`](#has-permissions) helper to conditionally render a delete button based on the presence of the `delete-users` permission.\n\n```handlebars\n{{! app/templates/users/index.hbs }}\n\n{{#if (has-permissions \"delete-users\")}}\n  <button type=\"button\">\n    Delete User\n  </button>\n{{/if}}\n```\n\n> **NOTE:** If you need to validate permissions inside a JavaScript file, you can use the [`hasPermissions`](#haspermissions) or the [`hasSomePermissions`](#hassomepermissions) method on the `permissions` service instead.\n\n### 2\\. Setting up Route Permissions\n\nStart off with defining the required permissions per route. You're free to define them where you want, as long as the format is the same as shown below.\n\n```javascript\n// app/route-permissions.js\n\nexport default {\n  'users.index': ['view-users'],\n  'users.create': ['create-users'],\n  'users.edit': ['edit-users'],\n};\n```\n\nNext, edit the `protected` route from step 1 as follows:\n\n1. Use the [`setRoutePermissions`](#setroutepermissions) method to pass along the required permissions per route to the `permissions` service\n2. Add a route-access-denied handler to determine what needs to happen when a transition occurs that is denied\n3. Call [`enableRouteValidation`](#enableroutevalidation) with the initial transition\n\n```javascript\n// app/routes/protected.js\n\nimport { registerDestructor } from '@ember/destroyable';\nimport Route from '@ember/routing/route';\nimport { service } from '@ember/service';\nimport ROUTE_PERMISSIONS from 'app-name/route-permissions';\n\nexport default class ProtectedRoute extends Route {\n  @service('api') apiService;\n  @service('permissions') permissionsService;\n  @service('router') routerService;\n\n  async beforeModel(transition) {\n    const permissions = await this.apiService.request('/permissions');\n\n    this.permissionsService.setPermissions(permissions);\n    this.permissionsService.setRoutePermissions(ROUTE_PERMISSIONS);\n\n    const handler = (/* deniedTransition */) => {\n      // Handle the denied transition.\n      // E.g. redirect to a generic error route:\n      this.routerService.replaceWith('error', { error: 'access-denied' });\n    };\n\n    this.permissionsService.addRouteAccessDeniedHandler(handler);\n\n    registerDestructor(this, () => {\n      this.permissionsService.removeRouteAccessDeniedHandler(handler);\n    });\n\n    this.permissionsService.enableRouteValidation(transition);\n  }\n}\n```\n\nNow, each transition will be validated (including the provided initial transition) against the required permissions per route. If a transition is denied, the added route-access-denied handler will be called with the denied transition.\n\nSince the required permissions per route are now set, we can start checking if routes can be accessed. In the example below, we use the [`can-access-route`](#can-access-route) helper to do so.\n\n```handlebars\n{{! app/components/menu.hbs }}\n\n{{#if (can-access-route \"users.index\")}}\n  <li>\n    <LinkTo @route=\"users.index\">\n      Users\n    </LinkTo>\n  </li>\n{{/if}}\n```\n\n> **NOTE:** If you need to validate if a route can be accessed inside a JavaScript file, you can use the [`canAccessRoute`](#canaccessroute) method on the `permissions` service instead.\n\n## Public API\n\n### `permissions` Service\n\n#### Methods\n\n##### `setPermissions`\n\nSet the permissions for the current session.\n\n###### Arguments\n\nAn array of permissions.\n\n###### Returns\n\n/\n\n###### Example\n\n```javascript\npermissionsService.setPermissions([\n  'view-users',\n  'create-users',\n  'edit-users',\n]);\n```\n\n##### `setRoutePermissions`\n\nSet the required permissions per route.\n\n###### Arguments\n\nAn object of which the keys are route names and the values are arrays of required permissions.\n\n###### Returns\n\n/\n\n###### Example\n\n```javascript\npermissionsService.setRoutePermissions({\n  'users.index': ['view-users'],\n  'users.create': ['create-users'],\n  'users.edit': ['edit-users'],\n});\n```\n\n##### `hasPermissions`\n\nCheck if all the provided permissions are available for the current session.\n\n###### Arguments\n\nAn array of permissions.\n\n###### Returns\n\nReturns `true` if all the provided permissions are available for the current session, `false` if otherwise.\n\n###### Example\n\n```javascript\npermissionsService.hasPermissions([\n  'view-users',\n  'create-users',\n  'edit-users',\n]);\n```\n\n##### `hasSomePermissions`\n\nCheck if some of the provided permissions are available for the current session.\n\n###### Arguments\n\nAn array of permissions.\n\n###### Returns\n\nReturns `true` if some of the provided permissions are available for the current session, `false` if otherwise.\n\n###### Example\n\n```javascript\npermissionsService.hasSomePermissions([\n  'view-users',\n  'create-users',\n  'edit-users',\n]);\n```\n\n##### `canAccessRoute`\n\nCheck if the provided route can be accessed.\n\n###### Arguments\n\nA route's name.\n\n###### Returns\n\nReturns `true` if the provided route can be accessed, `false` if otherwise.\n\n###### Example\n\n```javascript\npermissionsService.canAccessRoute('users.index');\n```\n\n##### `enableRouteValidation`\n\nTell the `permissions` service that it should start validating each transition (including the provided initial transition) and confirm that it's allowed based on the required permissions per route. If a transition is denied, all added route-access-denied handlers will be called with the denied transtion.\n\n###### Arguments\n\nThe initial transition.\n\n###### Returns\n\n/\n\n###### Example\n\n```javascript\npermissionsService.enableRouteValidation(transition);\n```\n\n##### `addRouteAccessDeniedHandler`\n\nAdd a route-access-denied handler.\n\n###### Arguments\n\nA handler.\n\n###### Returns\n\n/\n\n###### Example\n\n```javascript\nconst handler = (/* deniedTransition */) => {\n  // Handle the denied transition.\n  // E.g. redirect to a generic error route:\n  this.routerService.replaceWith('error', { error: 'access-denied' });\n};\n\nthis.permissionsService.addRouteAccessDeniedHandler(handler);\n```\n\n##### `removeRouteAccessDeniedHandler`\n\nRemove a previously added route-access-denied handler.\n\n###### Arguments\n\nA handler.\n\n###### Returns\n\n/\n\n###### Example\n\n```javascript\nconst handler = (/* deniedTransition */) => {\n  // Handle the denied transition.\n  // E.g. redirect to a generic error route:\n  this.routerService.replaceWith('error', { error: 'access-denied' });\n};\n\nthis.permissionsService.removeRouteAccessDeniedHandler(handler);\n```\n\n### Helpers\n\n#### `has-permissions`\n\nCheck if all the provided permissions are available for the current session.\n\n###### Arguments\n\nSeparate permissions.\n\n###### Returns\n\nReturns `true` if all the provided permissions are available for the current session, `false` if otherwise.\n\n###### Example\n\n```handlebars\n{{has-permissions \"view-users\" \"create-users\" \"edit-users\"}}\n```\n\n#### `has-some-permissions`\n\nCheck if some of the provided permissions are available for the current session.\n\n###### Arguments\n\nSeparate permissions.\n\n###### Returns\n\nReturns `true` if some of the provided permissions are available for the current session, `false` if otherwise.\n\n###### Example\n\n```handlebars\n{{has-some-permissions \"view-users\" \"create-users\" \"edit-users\"}}\n```\n\n#### `can-access-route`\n\nCheck if the provided route can be accessed.\n\n###### Arguments\n\nA route's name.\n\n###### Returns\n\nReturns `true` if the provided route can be accessed, `false` if otherwise.\n\n###### Example\n\n```handlebars\n{{can-access-route \"users.index\"}}\n```\n\n## Contributing\n\nSee the [Contributing](./CONTRIBUTING.md) guide for details.\n\n## License\n\nThis project is licensed under the [MIT License](./LICENSE.md).\n","readmeFilename":"README.md"}