https://github.com/sms-system/simple-abac
Simple Attribute-based access control module
https://github.com/sms-system/simple-abac
abac acl nodejs
Last synced: 5 months ago
JSON representation
Simple Attribute-based access control module
- Host: GitHub
- URL: https://github.com/sms-system/simple-abac
- Owner: sms-system
- License: mit
- Created: 2017-02-27T19:42:18.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-03-03T16:39:56.000Z (over 9 years ago)
- Last Synced: 2024-11-10T11:39:08.589Z (over 1 year ago)
- Topics: abac, acl, nodejs
- Language: JavaScript
- Size: 7.81 KB
- Stars: 3
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# simple-abac
Simple Attribute-based access control module
## Example
File `config/abac.js`:
```js
var ABAC = require('simple-abac')
const ROLES = {
ADMIN: 'ADMIN',
USER: 'USER',
MANAGER: 'MANAGER'
}
module.exports = new ABAC({
'*': user => user.role == ROLES.ADMIN,
create_post: () => true,
edit_post: [
(user, post) => user.role == ROLES.USER && post.user_id == user.id,
(user, post) => user.role == ROLES.MANAGER,
],
delete_post: { as: 'edit_post' }
})
```
File `app.js`:
```js
var abac = require('./conf/abac')
const adminUser = {
id: 1,
role: 'ADMIN'
}
const user = {
id: 2,
role: 'USER'
}
const posts = [{
user_id: 2,
title: 'Post from user 2'
}, {
user_id: 3,
title: 'Post from user 3'
}]
console.log('user #1 role: ' + adminUser.role)
posts.forEach(post => {
if (abac.can( adminUser, 'delete_post', post )) {
console.log('You can delete post "' + post.title + '"')
} else {
console.log('You can\'t delete post "' + post.title + '"')
}
})
console.log('\n')
console.log('user #2 role: ' + user.role)
posts.forEach(post => {
if (abac.can( user, 'delete_post', post )) {
console.log('You can delete post "' + post.title + '"')
} else {
console.log('You can\'t delete post "' + post.title + '"')
}
})
console.log('\n')
```
Result `node app.js` :
```
user #1 role: ADMIN
You can delete post "Post from user 2"
You can delete post "Post from user 3"
user #2 role: USER
You can delete post "Post from user 2"
You can't delete post "Post from user 3"
```