auth: function(client, action) {
if( !action.docName ){
action.accept();
return;
}
if( !client.authentication ){
action.reject();
return;
}
var user = client.authentication;
var doc = action.docName;
//check cache
var time = d.getTime();
if( perms[doc+'_'+user] && time < perms[doc+'_'+user].expires ){
console.log('found in cache');
if( perms[doc+'_'+user].accept ){
action.accept();
console.log('accepted');
}else{
action.reject();
console.log('rejected');
}
return;
}
var request = require('request');
request(url, function (error, response, body) {
if (!error && response.statusCode === 200) {
console.log('auth response: '+body);
var accept = false;
if( body==='1' ){
accept = true;
action.accept();
console.log('accepted');
}else{
action.reject();
console.log('rejected');
}
//cache response
var expires = d.getTime()+(60*60*1000); //expire in an hour
perms[doc+'_'+user] = {
accept: accept,
expires: expires
};
}
});
}