functional-acl
Advanced tools
Comparing version 0.5.0 to 0.6.0
@@ -13,8 +13,7 @@ 'use strict'; | ||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } | ||
function createMiddlewareFactory(options) { | ||
var _options$onDeny = options.onDeny; | ||
var | ||
// Denial handler, used by the default 'applyRule'. | ||
// If none supplied, will throw `ACLRejectionError`. | ||
onDeny = _options$onDeny === undefined ? function (rule, context) { | ||
var onDeny = _options$onDeny === undefined ? function (rule, context) { | ||
throw new _index.ACLRejectionError(rule, context); | ||
@@ -31,15 +30,11 @@ } : _options$onDeny; | ||
var _options$deriveContex = options.deriveContext; | ||
var | ||
// By default, no context is derived from the request | ||
// context. | ||
deriveContext = _options$deriveContex === undefined ? function () { | ||
var deriveContext = _options$deriveContex === undefined ? function () { | ||
return {}; | ||
} : _options$deriveContex; | ||
var _options$createDirect = options.createDirectContext; | ||
var | ||
var _options$createDirect = options. | ||
// By default, the arguments have to be objects, | ||
// they are merged into the context in order. | ||
createDirectContext = _options$createDirect === undefined ? function () { | ||
createDirectContext; | ||
var createDirectContext = _options$createDirect === undefined ? function () { | ||
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | ||
@@ -49,3 +44,3 @@ args[_key2] = arguments[_key2]; | ||
return Object.assign.apply(Object, [{}].concat(args)); | ||
return Object.assign.apply(Object, [{}].concat(_toConsumableArray(args))); | ||
} : _options$createDirect; | ||
@@ -61,3 +56,3 @@ | ||
try { | ||
applyRule(rule, createDirectContext.apply(undefined, args), deriveContext(req, res, next), req, res, next); | ||
applyRule(rule, createDirectContext.apply(undefined, _toConsumableArray(args)), deriveContext(req, res, next), req, res, next); | ||
} catch (error) { | ||
@@ -64,0 +59,0 @@ next(error); |
@@ -32,2 +32,8 @@ 'use strict'; | ||
*/ | ||
// ---------------------------------------------------------------------------- | ||
// -- Flowtypes | ||
// ---------------------------------------------------------------------------- | ||
function never() { | ||
@@ -52,4 +58,4 @@ return false; | ||
function not(predicate) { | ||
return function () { | ||
return !predicate.apply(undefined, arguments); | ||
return function (context) { | ||
return !predicate(context); | ||
}; | ||
@@ -66,9 +72,5 @@ } | ||
return function () { | ||
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | ||
args[_key2] = arguments[_key2]; | ||
} | ||
return function (context) { | ||
return predicates.every(function (predicate) { | ||
return predicate.apply(undefined, args); | ||
return predicate(context); | ||
}); | ||
@@ -82,13 +84,9 @@ }; | ||
function some() { | ||
for (var _len3 = arguments.length, predicates = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { | ||
predicates[_key3] = arguments[_key3]; | ||
for (var _len2 = arguments.length, predicates = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | ||
predicates[_key2] = arguments[_key2]; | ||
} | ||
return function () { | ||
for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { | ||
args[_key4] = arguments[_key4]; | ||
} | ||
return function (context) { | ||
return predicates.some(function (predicate) { | ||
return predicate.apply(undefined, args); | ||
return predicate(context); | ||
}); | ||
@@ -112,4 +110,4 @@ }; | ||
function allow(predicate) { | ||
return function () { | ||
return !predicate || predicate.apply(undefined, arguments) ? true : null; | ||
return function (context) { | ||
return !predicate || predicate(context) ? true : null; | ||
}; | ||
@@ -122,4 +120,4 @@ } | ||
function deny(predicate) { | ||
return function () { | ||
return !predicate || predicate.apply(undefined, arguments) ? false : null; | ||
return function (context) { | ||
return !predicate || predicate(context) ? false : null; | ||
}; | ||
@@ -137,4 +135,4 @@ } | ||
function invert(rule) { | ||
return function () { | ||
var result = rule.apply(undefined, arguments); | ||
return function (context) { | ||
var result = rule(context); | ||
return result === null ? null : !result; | ||
@@ -149,7 +147,7 @@ }; | ||
function forceDecisionIf(predicate, rule) { | ||
var undecidedResult = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2]; | ||
var undecidedResult = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; | ||
return function () { | ||
if (predicate.apply(undefined, arguments)) { | ||
var result = rule.apply(undefined, arguments); | ||
return function (context) { | ||
if (predicate(context)) { | ||
var result = rule(context); | ||
return result === null ? undecidedResult : result; | ||
@@ -170,7 +168,7 @@ } | ||
function combineRules() { | ||
for (var _len5 = arguments.length, rules = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { | ||
rules[_key5] = arguments[_key5]; | ||
for (var _len3 = arguments.length, rules = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { | ||
rules[_key3] = arguments[_key3]; | ||
} | ||
return function () { | ||
return function (context) { | ||
var _iteratorNormalCompletion = true; | ||
@@ -184,3 +182,3 @@ var _didIteratorError = false; | ||
var result = rule.apply(undefined, arguments); | ||
var result = rule(context); | ||
if (result !== null) { | ||
@@ -216,3 +214,3 @@ return result; | ||
function ACLRejectionError(rule) { | ||
function ACLRejectionError(rule, context) { | ||
_classCallCheck(this, ACLRejectionError); | ||
@@ -222,13 +220,8 @@ | ||
var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ACLRejectionError).call(this, message)); | ||
var _this = _possibleConstructorReturn(this, (ACLRejectionError.__proto__ || Object.getPrototypeOf(ACLRejectionError)).call(this, message)); | ||
_this.name = _this.constructor.name; | ||
_this.message = message; | ||
for (var _len6 = arguments.length, args = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) { | ||
args[_key6 - 1] = arguments[_key6]; | ||
} | ||
_this.args = args; | ||
Error.captureStackTrace(_this, _this.constructor.ruleName); | ||
_this.context = context; | ||
Error.captureStackTrace(_this, _this.constructor); | ||
return _this; | ||
@@ -246,12 +239,8 @@ } | ||
function enforce(rule) { | ||
for (var _len7 = arguments.length, args = Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) { | ||
args[_key7 - 1] = arguments[_key7]; | ||
} | ||
var result = rule.apply(undefined, args); | ||
function enforce(rule, context) { | ||
var result = rule(context); | ||
if (!result) { | ||
throw new (Function.prototype.bind.apply(ACLRejectionError, [null].concat([rule], args)))(); | ||
throw new ACLRejectionError(rule, context); | ||
} | ||
return result; | ||
} |
@@ -15,2 +15,3 @@ 'use strict'; | ||
// flow-disable-next-line | ||
var isGuest = function isGuest(_ref) { | ||
@@ -22,7 +23,7 @@ var user = _ref.user; | ||
var user = _ref2.user; | ||
return user && user.isAdmin; | ||
return !!user && !!user.isAdmin; | ||
}; | ||
var isSteve = function isSteve(_ref3) { | ||
var user = _ref3.user; | ||
return user && user.name === 'steve'; | ||
return !!user && user.name === 'steve'; | ||
}; | ||
@@ -29,0 +30,0 @@ |
{ | ||
"name": "functional-acl", | ||
"version": "0.5.0", | ||
"version": "0.6.0", | ||
"description": "A functional implementation of access control lists (ACLs)", | ||
@@ -18,6 +18,6 @@ "repository": { | ||
"prepublish": "npm run validate && npm run build", | ||
"semantic-release": "semantic-release pre && npm publish && semantic-release post", | ||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", | ||
"test": "mocha --require babel-register src/**/*.test.js", | ||
"tdd": "npm run test -- -w", | ||
"validate": "npm run lint && npm run test", | ||
"validate": "flow && npm run lint && npm run test", | ||
"watch": "npm run build -- --watch" | ||
@@ -28,12 +28,14 @@ }, | ||
"devDependencies": { | ||
"babel": "^6.0.15", | ||
"babel-cli": "^6.1.4", | ||
"babel-core": "^6.0.15", | ||
"babel-eslint": "^6.0.4", | ||
"babel-plugin-transform-flow-strip-types": "^6.14.0", | ||
"babel-preset-es2015": "^6.1.4", | ||
"babel-preset-stage-0": "^6.1.2", | ||
"babel-register": "^6.9.0", | ||
"conventional-changelog-cli": "^1.2.0", | ||
"eslint": "^2.11.1", | ||
"eslint-config-wish-technology": "^2.3.0", | ||
"eslint-config-airbnb": "^8.0.0", | ||
"eslint-plugin-babel": "^3.2.0", | ||
"eslint-plugin-flow-vars": "^0.4.0", | ||
"eslint-plugin-flowtype": "^2.19.0", | ||
"eslint-plugin-import": "^1.8.1", | ||
@@ -40,0 +42,0 @@ "eslint-plugin-jsx-a11y": "^1.2.2", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
28455
6
20
419