{"id":16291353,"url":"https://github.com/seeden/rbac","last_synced_at":"2025-05-15T03:05:20.509Z","repository":{"id":15816589,"uuid":"18556263","full_name":"seeden/rbac","owner":"seeden","description":"Hierarchical Role Based Access Control for NodeJS","archived":false,"fork":false,"pushed_at":"2023-10-13T09:24:34.000Z","size":581,"stargazers_count":1000,"open_issues_count":20,"forks_count":102,"subscribers_count":32,"default_branch":"master","last_synced_at":"2025-05-15T03:05:19.670Z","etag":null,"topics":["auth","authentication","authorization","javascript","permissions","rbac","role","role-based-access-control"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seeden.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"github":["seeden"]}},"created_at":"2014-04-08T11:50:07.000Z","updated_at":"2025-05-11T05:06:02.000Z","dependencies_parsed_at":"2022-06-26T02:58:39.346Z","dependency_job_id":"0c5fac62-867d-4452-9479-11cca03905ad","html_url":"https://github.com/seeden/rbac","commit_stats":{"total_commits":118,"total_committers":9,"mean_commits":13.11111111111111,"dds":0.1610169491525424,"last_synced_commit":"d3eea5d35f8b59a4d9f3961f12f06196b7bb6d70"},"previous_names":["goodmodule/rbac","seeden/rbac","cherryprojects/rbac"],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seeden%2Frbac","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seeden%2Frbac/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seeden%2Frbac/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seeden%2Frbac/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seeden","download_url":"https://codeload.github.com/seeden/rbac/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264765,"owners_count":22041793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auth","authentication","authorization","javascript","permissions","rbac","role","role-based-access-control"],"created_at":"2024-10-10T20:01:08.557Z","updated_at":"2025-05-15T03:05:20.492Z","avatar_url":"https://github.com/seeden.png","language":"JavaScript","readme":"# RBAC\n(Hierarchical Role Based Access Control)\n\n[![NPM version][npm-image]][npm-url]\n[![build status][travis-image]][travis-url]\n[![Test coverage][coveralls-image]][coveralls-url]\n[![Gitter chat](https://badges.gitter.im/seeden/rbac.png)](https://gitter.im/seeden/rbac)\n\n[npm-image]: https://img.shields.io/npm/v/rbac.svg?style=flat-square\n[npm-url]: https://www.npmjs.com/rbac\n[travis-image]: https://img.shields.io/travis/seeden/rbac/master.svg?style=flat-square\n[travis-url]: https://travis-ci.org/seeden/rbac\n[coveralls-image]: https://img.shields.io/coveralls/seeden/rbac/master.svg?style=flat-square\n[coveralls-url]: https://coveralls.io/r/seeden/rbac?branch=master\n[github-url]: https://github.com/seeden/rbac\n\nRBAC is the authorization library for NodeJS.\n\n:tada: We have supported DynamoDB storage now by implementation of [dynamoose](https://github.com/automategreen/dynamoose).\n\n## Motivation\n\nI needed hierarchical role based access control for my projects based on ExpressJS.\nI had one requirement. This structure must be permanently stored in various storages.\nFor example in memory or Mongoose.\nBecause there is a lot of options for storing of data and many of them are asynchronous.\nI created asynchronous API.\nPlease, if you found any bug or you need custom API, create an issue or pull request.\n\n## Documentation\n\n[Read more about API in documentation](http://seeden.github.io/rbac/RBAC.html)\n\n# Support us\n\nStar this project on [GitHub][github-url].\n\n## Install\n\n```sh\nnpm install rbac\n```\n\n## Usage\n\n```js\nimport { RBAC } from 'rbac'; // ES5 var RBAC = require('rbac').default;\nconst rbac = new RBAC({\n  roles: ['superadmin', 'admin', 'user', 'guest'],\n  permissions: {\n    user: ['create', 'delete'],\n    password: ['change', 'forgot'],\n    article: ['create'],\n    rbac: ['update'],\n  },\n  grants: {\n    guest: ['create_user', 'forgot_password'],\n    user: ['change_password'],\n    admin: ['user', 'delete_user', 'update_rbac'],\n    superadmin: ['admin'],\n  },\n});\n\nawait rbac.init();\n```\n\n## Usage with express\n\n```js\nimport express from 'express';\nimport { RBAC } from 'rbac';\nimport secure from 'rbac/controllers/express';\n\n// your custom controller for express\nfunction adminController(req, res, next) {\n  res.send('Hello admin');\n}\n\nconst app = express();\nconst rbac = new RBAC({\n  roles: ['admin', 'user'],\n});\n\nawait rbac.init();\n\n// setup express routes\napp.use('/admin', secure.hasRole(rbac, 'admin'), adminController);\n```    \n\n## Check permissions\n\n```js\nconst can = await rbac.can('admin', 'create', 'article');\nif (can) {\n  console.log('Admin is able create article');\n}\n\n// or you can use instance of admin role\nconst admin = await rbac.getRole('admin');\nif (!admin) {\n  return console.log('Role does not exists');\n}\n\nconst can = await admin.can('create', 'article');\nif (can) {\n  console.log('Admin is able create article');    \n}\n```\n\n## Mongoose user model\n\nPlease take a look on plugin [mongoose-hrbac](http://github.com/seeden/mongoose-hrbac)\n\n## Build documentation\n\n```sh\nnpm run doc\n```  \n\n## Running Tests\n\n```sh\nnpm run test\n```\n\n## Build\n\n```sh\nnpm run build\n```\n\n## Credits\n\n  - [Zlatko Fedor](http://github.com/seeden)\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2016-2018 Zlatko Fedor zfedor@goodmodule.com\n","funding_links":["https://github.com/sponsors/seeden"],"categories":["JavaScript","Authorization"],"sub_categories":["\u003ca name=\"authZ-node\"\u003e\u003c/a\u003eNode.js"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseeden%2Frbac","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseeden%2Frbac","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseeden%2Frbac/lists"}