From c8d6dc2531ca50ea44f845c7ddf4b6c67d42052a Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Sun, 29 Mar 2015 21:59:48 +0100 Subject: [PATCH] Auth permission should honour the token scope --- red/api/auth/index.js | 4 +-- red/api/auth/permissions.js | 35 +++++++++++++++++++++------ red/api/auth/strategies.js | 19 +++++++++------ red/comms.js | 6 ++--- test/red/api/auth/permissions_spec.js | 20 +++++++++------ 5 files changed, 56 insertions(+), 28 deletions(-) diff --git a/red/api/auth/index.js b/red/api/auth/index.js index 344f80bd9..137ac6d49 100644 --- a/red/api/auth/index.js +++ b/red/api/auth/index.js @@ -49,7 +49,7 @@ function needsPermission(permission) { if (!req.user) { return next(); } - if (permissions.hasPermission(req.user,permission)) { + if (permissions.hasPermission(req.authInfo.scope,permission)) { return next(); } return res.send(401); @@ -101,7 +101,7 @@ module.exports = { errorHandler: function(err,req,res,next) { //TODO: standardize json response //TODO: audit log statment - //console.log(err.stack); + console.log(err.stack); //log.log({level:"audit",type:"auth",msg:err.toString()}); return server.errorHandler()(err,req,res,next); }, diff --git a/red/api/auth/permissions.js b/red/api/auth/permissions.js index 680797aa4..e0398c7ba 100644 --- a/red/api/auth/permissions.js +++ b/red/api/auth/permissions.js @@ -19,17 +19,36 @@ var util = require('util'); var readRE = /^((.+)\.)?read$/ var writeRE = /^((.+)\.)?write$/ -function hasPermission(user,permission) { - if (!user.permissions) { - return false; - } - if (user.permissions == "*") { +function hasPermission(userScope,permission) { + var i; + if (util.isArray(userScope)) { + if (userScope.length === 0) { + return false; + } + for (i=0;i