UNPKG

authorizedjs

Version:

A tool for authorization based on permits

49 lines (34 loc) 1.31 kB
PermitterDetector = require './permitter_detector' EventEmitter = require('events').EventEmitter class Authorization extends EventEmitter constructor: (@permits = null) -> @options = {} @on 'error', (type) => if @options.error and typeof @options.error is "function" @options.error type @on 'success', (data) => if @options.success and typeof @options.success is "function" @options.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 @permits permitter = new PermitterDetector(@permits).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 @success successCB if failureCB then @error failureCB permit = @test user, resource, action if permit then return @emit 'success', true else return @emit 'error', @errors(permit) success: (callback) -> @options.success = callback @ error: (callback) -> @options.error = callback @ module.exports = Authorization