jsonacl
Version:
Simple ACL built using a JSON file to persist permissions
60 lines (39 loc) • 1.89 kB
Markdown
Access Control List Class
=========================
Simple implementation of ACL (Access Control Lists):
* Run the tests with: `node test.js`
API
---
`Acl(filename)`:
* create an ACL object
* `filename` is json file where the permissions can be saved
`Acl.grant(granter, object, verb, role)`:
* `granter` - the `role` performing the `grant` operation. This role must have 'grant' permissions (`verb`) to be able to perform grant.
* `role` now has permission to perform `verb` operations on `object`
* `object` is created with `grant` permission for `granter` if it does not exist
* returns true if successful and false otherwise
`Acl.revoke(granter, object, verb, role)`:
* `granter` - the `role` performing the `revoke` operation. This role must have 'grant' permissions (`verb`) to be able to perform revoke.
* `role` does not has permission to perform `verb` operations on `object` anymore (it is not necessary that `role` has `verb` permissions to perform `revoke`)
* returns `true` if successful and `false` otherwise
`Acl.init`:
* read saved permissions from the file specified in the constructor
`Acl.save`:
* save the permissions to the file specified in the constructor
Example
-------
```
var Acl = require('./acl.js');
var a = new Acl('acl.json');
a.grant('jonas', 'mytable', 'get', 'pelle');
a.isAllowed('mytable', 'get', 'pelle'); // true
a.isAllowed('mytable', 'get', 'sture'); // undefined (interpret as false)
a.revoke('jonas', 'mytable', 'get', 'pelle');
a.isAllowed('mytable', 'get', 'pelle'); // false
a.save(); // save json to acl.json
var b = new Acl('acl.json');
b.init() // b now contains the permissions
.then(function(){ // init returns a promise (see promisejs.org for details)
console.log(b.grants);
});
```