co-osin-node-rbac
v4.0.3
Published
Hierarchical Role Based Access Control. Modified version with Multi-Tenant support on Dynamoose storage. Name has 'rbac' changed to node-rbac. Orginal version is here https://github.com/CherryProjects/rbac
Downloads
3
Maintainers
Readme
RBAC
(Hierarchical Role Based Access Control)
RBAC is the authorization library for NodeJS.
:tada: We have supported DynamoDB storage now by implementation of dynamoose.
Motivation
I needed hierarchical role based access control for my projects based on ExpressJS. I had one requirement. This structure must be permanently stored in various storages. For example in memory or Mongoose. Because there is a lot of options for storing of data and many of them are asynchronous. I created asynchronous API. Please, if you found any bug or you need custom API, create an issue or pull request.
Documentation
Read more about API in documentation
Support us
Star this project on GitHub.
Install
npm install rbac
Usage
import RBAC from 'rbac'; // ES5 var RBAC = require('rbac').default;
const rbac = new RBAC({
roles: ['superadmin', 'admin', 'user', 'guest'],
permissions: {
user: ['create', 'delete'],
password: ['change', 'forgot'],
article: ['create'],
rbac: ['update']
},
grants: {
guest: ['create_user', 'forgot_password'],
user: ['change_password'],
admin: ['user', 'delete_user', 'update_rbac'],
superadmin: ['admin']
}
}, function(err, rbacInstance) {
if (err) {
throw err;
}
});
Usage with express
import express from 'express';
import RBAC from 'rbac';
import secure from 'rbac/controllers/express';
// your custom controller for express
function adminController(req, res, next) {
res.send('Hello admin');
}
const app = express();
const rbac = new RBAC({
roles: ['admin', 'user']
}, (err, rbac) => {
if (err) throw err;
// setup express routes
app.use('/admin', secure.hasRole(rbac, 'admin'), adminController);
});
Check permissions
rbac.can('admin', 'create', 'article', (err, can) => {
if (err) {
throw err; // process error
}
if (can) {
console.log('Admin is able create article');
}
});
// or you can use instance of admin role
rbac.getRole('admin', (err, admin) => {
if (err) {
throw err; // process error
}
if (!admin) {
return console.log('Role does not exists');
}
admin.can('create', 'article', (err2, can) => {
if (err2) throw err2; // process error
if (can) {
console.log('Admin is able create article');
}
});
});
Mongoose user model
Please take a look on plugin mongoose-hrbac
Build documentation
npm run doc
Running Tests
npm run test
Build
npm run build
Credits
License
The MIT License (MIT)
Copyright (c) 2016 Zlatko Fedor [email protected]