access-rule
Advanced tools
Comparing version 1.0.0 to 2.0.0
@@ -1,3 +0,1 @@ | ||
/* @flow */ | ||
'use strict'; | ||
@@ -33,11 +31,11 @@ | ||
function allow(object, subject, operation) { | ||
return true; | ||
return Promise.resolve(true); | ||
} | ||
function deny(object, subject, operation) { | ||
return false; | ||
return Promise.resolve(false); | ||
} | ||
function authorized(object, subject, operation) { | ||
return !!subject; | ||
return Promise.resolve(!!subject); | ||
} | ||
@@ -47,4 +45,8 @@ | ||
return function (object, subject, operation) { | ||
return rules.every(function (rule) { | ||
return Promise.all(rules.map(function (rule) { | ||
return rule(object, subject, operation); | ||
})).then(function (results) { | ||
return results.every(function (result) { | ||
return result; | ||
}); | ||
}); | ||
@@ -56,4 +58,8 @@ }; | ||
return function (object, subject, operation) { | ||
return rules.some(function (rule) { | ||
return Promise.all(rules.map(function (rule) { | ||
return rule(object, subject, operation); | ||
})).then(function (results) { | ||
return results.some(function (result) { | ||
return result; | ||
}); | ||
}); | ||
@@ -60,0 +66,0 @@ }; |
@@ -6,3 +6,7 @@ /* @flow */ | ||
export type AccessOperation = string | ||
export type AccessRule = (object: AccessObject, subject: AccessSubject, operation: AccessOperation) => boolean | ||
export type AccessRule = ( | ||
object: AccessObject, | ||
subject: AccessSubject, | ||
operation: AccessOperation | ||
) => Promise<boolean> | ||
@@ -21,12 +25,12 @@ export var OP_GET = 'OP_GET' | ||
export function allow(object: AccessObject, subject: AccessSubject, operation: AccessOperation): boolean { | ||
return true | ||
export function allow(object: AccessObject, subject: AccessSubject, operation: AccessOperation): Promise<boolean> { | ||
return Promise.resolve(true) | ||
} | ||
export function deny(object: AccessObject, subject: AccessSubject, operation: AccessOperation): boolean { | ||
return false | ||
export function deny(object: AccessObject, subject: AccessSubject, operation: AccessOperation): Promise<boolean> { | ||
return Promise.resolve(false) | ||
} | ||
export function authorized(object: AccessObject, subject: AccessSubject, operation: AccessOperation): boolean { | ||
return !!subject | ||
export function authorized(object: AccessObject, subject: AccessSubject, operation: AccessOperation): Promise<boolean> { | ||
return Promise.resolve(!!subject) | ||
} | ||
@@ -36,4 +40,6 @@ | ||
export function everyRule(rules: Array<AccessRule>): AccessRule { | ||
return function(object: AccessObject, subject: AccessSubject, operation: AccessOperation): boolean { | ||
return rules.every(rule => rule(object, subject, operation)) | ||
return function(object: AccessObject, subject: AccessSubject, operation: AccessOperation): Promise<boolean> { | ||
return Promise.all( | ||
rules.map(rule => rule(object, subject, operation)) | ||
).then(results => results.every(result => result)) | ||
} | ||
@@ -44,4 +50,6 @@ } | ||
export function someRule(rules: Array<AccessRule>): AccessRule { | ||
return function(object: AccessObject, subject: AccessSubject, operation: AccessOperation): boolean { | ||
return rules.some(rule => rule(object, subject, operation)) | ||
return function(object: AccessObject, subject: AccessSubject, operation: AccessOperation): Promise<boolean> { | ||
return Promise.all( | ||
rules.map(rule => rule(object, subject, operation)) | ||
).then(results => results.some(result => result)) | ||
} | ||
@@ -53,5 +61,5 @@ } | ||
export function byOperation(schema: ByOperationSchema): AccessRule { | ||
return function(object: AccessObject, subject: AccessSubject, operation: AccessOperation): boolean { | ||
return function(object: AccessObject, subject: AccessSubject, operation: AccessOperation): Promise<boolean> { | ||
return schema[operation](object, subject, operation) | ||
} | ||
} |
{ | ||
"name": "access-rule", | ||
"version": "1.0.0", | ||
"version": "2.0.0", | ||
"description": "ACL in functional paradigm", | ||
@@ -33,3 +33,3 @@ "keywords": [ | ||
"devDependencies": { | ||
"babel": "5.6.14" | ||
"babel": "5.6.23" | ||
}, | ||
@@ -36,0 +36,0 @@ "peerDependencies": {}, |
5775
111