Comparing version 0.8.1 to 0.9.1
@@ -19,2 +19,14 @@ 'use strict'; | ||
function getAuthboxData(req) { | ||
req._authbox = req._authbox || {}; | ||
req._authbox.fired = req._authbox.fired || { | ||
check: false, | ||
log: false | ||
}; | ||
req._authbox.checkedAction = req._authbox.checkedAction || null; | ||
req._authbox.checkedVerdictType = req._authbox.checkedVerdictType || null; | ||
return req._authbox; | ||
} | ||
var Client = { | ||
@@ -36,8 +48,10 @@ config: { | ||
sendDefaultAction: function(request) { | ||
if (request._authboxFiredAction) { | ||
logDefaultAction: function(request) { | ||
var authboxData = getAuthboxData(request); | ||
if (authboxData.fired.log) { | ||
return; | ||
} | ||
Client._check('/action', request); | ||
Client._log(request, authboxData.checkedAction); | ||
}, | ||
@@ -49,27 +63,52 @@ | ||
_ensureOneAction: function(request, cb) { | ||
if (request._authboxFiredAction) { | ||
var message = 'You can only fire 1 Client check per HTTP request'; | ||
console.warn('AUTHBOX: ' + message); | ||
cb(message, null); | ||
return; | ||
_ensureOneRequest: function(type, request, cb) { | ||
var authboxData = getAuthboxData(request); | ||
invariant(authboxData.fired.hasOwnProperty(type), 'Bad type name: %s', type); | ||
if (authboxData.fired[type]) { | ||
var message = 'You can only fire 1 %s per HTTP request'; | ||
console.warn('AUTHBOX: ' + message, type); | ||
if (cb) { | ||
cb(message, null); | ||
} | ||
return true; | ||
} | ||
request._authboxFiredAction = true; | ||
authboxData.fired[type] = true; | ||
return false; | ||
}, | ||
check: function(request, action, cb) { | ||
Client._ensureOneAction(request, cb); | ||
Client._check('/action', request, action, cb); | ||
if (Client._ensureOneRequest('check', request, cb)) { | ||
return; | ||
} | ||
var authboxData = getAuthboxData(request); | ||
authboxData.checkedAction = action; | ||
Client._fire('/action_check', request, action, function(verdict) { | ||
authboxData.checkedVerdictType = verdict.type; | ||
return cb.apply(this, arguments); | ||
}); | ||
}, | ||
begin: function(request, action, cb) { | ||
Client._ensureOneAction(request, cb); | ||
Client._check('/action_begin', request, action, cb); | ||
log: function(request, action) { | ||
if (Client._ensureOneRequest('log', request)) { | ||
return; | ||
} | ||
Client._log(request, action); | ||
}, | ||
end: function(request, action, cb) { | ||
Client._check('/action_end', request, action, cb); | ||
_log: function(request, action) { | ||
var authboxData = getAuthboxData(request); | ||
if (authboxData.fired.check && authboxData.checkedVerdictType !== 'ALLOW') { | ||
return; | ||
} | ||
Client._fire('/action_log', request, action); | ||
}, | ||
_check: function(endpoint, req, action, cb) { | ||
_fire: function(endpoint, req, action, cb) { | ||
action = action || {}; | ||
@@ -112,3 +151,3 @@ cb = cb || emptyFunction; | ||
parsedResponse = JSON.parse(body); | ||
invariant(typeof parsedResponse.type === 'string', 'verdict did not include a type key'); | ||
invariant(typeof parsedResponse.type === 'string', 'verdict did not include a type key: ' + body + ' ' + Client.config.endpoint + endpoint); | ||
} catch (e) { | ||
@@ -115,0 +154,0 @@ // fail open |
@@ -9,3 +9,2 @@ 'use strict'; | ||
var emptyFunction = require('authbox-common/emptyFunction'); | ||
var invariant = require('authbox-common/invariant'); | ||
var os = require('os'); | ||
@@ -53,3 +52,3 @@ var sha256 = require('sha256'); | ||
cb(null, { | ||
$endpointURL: req.url, | ||
$endpointURL: req.originalUrl, | ||
$ipAddress: getIP(req), | ||
@@ -96,5 +95,4 @@ $localMachineID: { | ||
req._authbox = req._authbox || { | ||
isNewLocalMachineID: false | ||
}; | ||
req._authbox = req._authbox || {}; | ||
req._authbox.isNewLocalMachineID = req._authbox.isNewLocalMachineID || false; | ||
@@ -120,3 +118,3 @@ if (!localMachineID) { | ||
res.on('finish', function() { | ||
Client.sendDefaultAction(req); | ||
Client.logDefaultAction(req); | ||
}); | ||
@@ -123,0 +121,0 @@ } |
{ | ||
"name": "authbox", | ||
"version": "0.8.1", | ||
"version": "0.9.1", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
24117
301