authorizedjs
Version:
A tool for authorization based on permits
49 lines (34 loc) • 1.31 kB
text/coffeescript
PermitterDetector = require './permitter_detector'
EventEmitter = require('events').EventEmitter
class Authorization extends EventEmitter
constructor: ( = null) ->
= {}
'error', (type) =>
if .error and typeof .error is "function"
.error type
'success', (data) =>
if .success and typeof .success is "function"
.success data
errors: (type) ->
switch type
when undefined then return 'MissingPermits'
when null then return 'MissingPermit'
else return 'UnauthorizedAccess'
test: (user, resource, action) ->
return undefined unless
permitter = new PermitterDetector().detectFor(resource)
if permitter then return new permitter(user).call(action, resource)
return null
check: (user, resource, action, successCB=null, failureCB=null) ->
if successCB then successCB
if failureCB then failureCB
permit = user, resource, action
if permit then return 'success', true
else return 'error',
success: (callback) ->
.success = callback
@
error: (callback) ->
.error = callback
@
module.exports = Authorization