rbac
rbac copied to clipboard
When role doesn't exists getting "TypeError: Cannot read property 'length' of null"
The undefined check should be done before using role grants and NoSuchRole error should thrown. https://github.com/seeden/rbac/blob/9825490cfc4aef960f62ad9f7bd6c63f4ced9508/src/RBAC.js#L477
items has a default value [] what is yours value for variable items
Even I too wonder but I got following error: /home/dilip/workspace/test/node_modules/rbac/dist/RBAC.js:602 for (var i = 0; i < items.length; i++) { ^
TypeError: Cannot read property 'length' of null at /home/dilip/workspace/test/node_modules/rbac/dist/RBAC.js:602:34 at Memory.getGrants (/home/dilip/workspace/test/node_modules/rbac/dist/storages/Memory.js:195:16) at RBAC._traverseGrants (/home/dilip/workspace/test/node_modules/rbac/dist/RBAC.js:595:20) at RBAC.hasRole (/home/dilip/workspace/test/node_modules/rbac/dist/RBAC.js:758:12)
Code:
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;
}
});
// Passing existing role
rbac.can('editor', 'create', 'article', (err, data) => {
console.log(data);
});