New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

ocbesbn-bouncer

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ocbesbn-bouncer - npm Package Compare versions

Comparing version 0.2.10 to 0.2.11

circle.yml

110

index.js

@@ -44,3 +44,3 @@ /**

*/
var _isAuthorized = function(permissions, url, method, userClaims)
var _findResource = function(permissions, url, method, userClaims)
{

@@ -71,3 +71,5 @@ var action = actionLookUp[method];

});
if (endpoints.length > 0) return true;
if(endpoints.length > 0)
return endpoints[0];
}

@@ -81,2 +83,7 @@ }

var _isAuthorized = function(permissions, url, method, userClaims)
{
return _findResource(permissions, url, method, userClaims) !== false;
}
/**

@@ -112,7 +119,13 @@ * middleware to take care of the acl rules and permission

{
var permissions = response[0].results;
var isAuthorized = this.isAuthorized(permissions, url, method, userData);
var resource = _findResource(permissions, url, method, userData);
var isAuthorized = resource !== false;
if (!isAuthorized)
if(isAuthorized)
{
resolve(resource);
}
else
{
if (response[0].meta.next)

@@ -128,6 +141,2 @@ {

}
else
{
resolve()
}
})

@@ -160,6 +169,83 @@ .catch((err) =>

/**
* function to apply filters on the nested object
*
* @param {Array} Keys - whitefiled keys
* @param {Object} values - response result object
*
* @return {Object}
*/
var buildRecusiveResult = function(keys, values)
{
if(keys.length > 0)
{
let key = keys.shift();
if(typeof values[key] !== 'undefined')
return { [key]: buildRecusiveResult(keys, values[key]) };
return { };
}
return values;
}
/**
* function to apply filter on nested Object
* @param {Array} keyList
* @param {Object} values
*
* @return {Object}
*/
var applyStructureFilter = function(keyList, values)
{
var result = {};
keyList.forEach(key => result = extend(true, result, buildRecusiveResult(key.split('.'), values)));
return result;
}
/**
* function to filter the object or array by
* given whiltelist
*
* @param {Object} obj
* @param {Array} whiteKeys
*
* @return {Object}
*/
var filterObject = function(obj, whiteKeys)
{
if(Array.isArray(obj))
return obj.map(o => filterObject(o, whiteKeys)).filter(o => Object.keys(o).length > 0);
if (Array.isArray(whiteKeys) && typeof obj === 'object')
return applyStructureFilter(whiteKeys, obj);
return obj;
}
/**
* function to wrap or filter the response
* object to the restricted fields
*
* @param {Function} callback - callback function to bind the response object
* @param {Array} keys - fields defined in the acl.json
*/
var wrapCallback = function(callback, keys)
{
return (obj) => callback(filterObject(obj, keys));
}
checkIsPermitted(req.originalUrl.split('?')[0], req.method, req.opuscapita.userData())
.then((response) =>
.then((resource) =>
{
next();
if(typeof resource === 'object' && resource.fields)
{
res.json = wrapCallback(res.json.bind(res), resource.fields);
res.jsonp = wrapCallback(res.jsonp.bind(res), resource.fields);
}
next();
})

@@ -192,3 +278,5 @@ .catch((err) =>

'PUT': 'edit',
'DELETE': 'delete'
'DELETE': 'delete',
'HEAD': 'head',
'OPTIONS': 'options'
}

@@ -195,0 +283,0 @@

5

package.json
{
"name": "ocbesbn-bouncer",
"version": "0.2.10",
"version": "0.2.11",
"description": "Express middleware for ACl service and validation",

@@ -12,5 +12,6 @@ "main": "index.js",

"dependencies": {
"extend": "^3.0.0",
"lodash.filter": "^4.6.0",
"extend": "^3.0.0"
"ocbesbn-cache": "^1.0.4"
}
}

@@ -66,3 +66,4 @@ # BOUNCER

"resourceId": "/api/health/check", `// Regular expression/complete endpoint (route of API endpoint)`
"actions": ["edit", "read"] `// Actions allowed edit=PUT, read=GET, delete=DELETE, create=POST`
"actions": ["edit", "read"], `// Actions allowed edit=PUT, read=GET, delete=DELETE, create=POST`
"fields": ['result', 'more.somefield'] `// defines what are all the fields can be sent to the user/requestor, nested fields can be added like OBJECT.SOMEKEY..`
}

@@ -69,0 +70,0 @@ ]

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc