rbac icon indicating copy to clipboard operation
rbac copied to clipboard

When role doesn't exists getting "TypeError: Cannot read property 'length' of null"

Open tensult opened this issue 7 years ago • 2 comments

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

tensult avatar Aug 18 '17 12:08 tensult

items has a default value [] what is yours value for variable items

seeden avatar Aug 18 '17 14:08 seeden

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);
});

tensult avatar Aug 18 '17 14:08 tensult