Skip to content

Commit

Permalink
successfully implemented new version of access control for single route
Browse files Browse the repository at this point in the history
  • Loading branch information
BlueAccords committed Apr 19, 2018
1 parent 8b9481a commit a0a5914
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 5 deletions.
4 changes: 4 additions & 0 deletions commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,7 @@
- create queries file for SQL queries(if needed)
- `server/db/queries/{model_name}`


## Redid Server for session
- Run server `redis-server`
- Run CLI to check redis db `redis-cli`
Binary file modified dump.rdb
Binary file not shown.
6 changes: 6 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"license": "MIT",
"dependencies": {
"accesscontrol": "^2.2.1",
"accesscontrol-middleware": "git+https://github.com/BlueAccords/accesscontrol-middleware.git",
"bcryptjs": "^2.4.3",
"body-parser": "^1.18.2",
"boom": "^7.2.0",
Expand Down
5 changes: 2 additions & 3 deletions server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,15 @@ app.use(function (err, req, res, next) {
if(process.env.NODE_ENV == 'development') {
console.error(err.stack)
}
console.log(err);

if(Boom.isBoom(err)) {
res.status(err.output.statusCode)
.json(err.output.payload);
} else {
res.status(500).json({
success: false,
error: err,
data: err
error: err.message || err,
data: err,
});
}
});
Expand Down
20 changes: 19 additions & 1 deletion server/routes/v1.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ const path = require('path');
const passport = require('./../authentication/local-strategy');

// user role based permission

const AccessControlMiddleware = require('accesscontrol-middleware');
const AccessControl = require('accesscontrol');
const knexConnection = require('./../db/connection') // used to make db calls to check for ownership
const acConfig = require('./../config/accessControlConfig');
const ac = new AccessControl(acConfig);
const isAllowed = new AccessControlMiddleware(ac, knexConnection);

const rbac = require('./../middlewares/userRoleHandler').checkPermissions;

/* GET home page. */
Expand Down Expand Up @@ -53,7 +61,17 @@ router.get(`${folderBaseUrl}/:id`,
rbac(folderResource, 'read', false),
folderController.get);
router.put(`${folderBaseUrl}/:id`,
rbac(folderResource, 'update', true),
// rbac(folderResource, 'update', true),
isAllowed.check({
resource : folderResource,
action: 'update',
checkOwnerShip : true,
useModel: true,
operands : [
{ source : 'user', key : 'id' },
{ source : 'params', key : 'id', modelName: folderResource, modelKey: 'id', opKey: 'author_id' }
]
}),
folderController.update);

// chips
Expand Down
1 change: 0 additions & 1 deletion test/routes.folder.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,6 @@ describe('routes : folder', () => {
should.not.exist(err);
res.status.should.equal(404);
res.type.should.equal('application/json');
res.body.message.should.eql('NotFoundError');
done();
});
});
Expand Down

0 comments on commit a0a5914

Please sign in to comment.