fingerprint/server/middleware/api/fingerprints.js
2015-08-07 17:13:32 +02:00

67 lines
1.3 KiB
JavaScript

var UAParser = require('ua-parser-js');
var parser = new UAParser();
module.exports = function(config, mongoose) {
var Fingerprint = mongoose.model('Fingerprint');
return {
create: function(req, res, next) {
Fingerprint.create(req.body, function(err, fp) {
if(err) return next(err);
res.status(200).data.fingerprint = fp;
next();
});
},
findAll: function(req, res, next) {
},
push: function(req, res, next) {
var ua = req.get('user-agent');
parser.setUA(ua);
var uaParsed = _.omit(parser.getResult(), 'ua');
var headers = _.omit(req.headers, [ 'cookie', 'user-agent' ]);
var ip = req.ip;
var clientFingerprint = _.extend({
ip: ip,
ua: ua,
uaParsed: uaParsed,
headers: headers
}, req.body);
res.data.clientFingerprint = clientFingerprint;
if(req.params.id !== 'null') {
Fingerprint.findById( req.params.id, function(err, fp) {
if(err) return next(err);
if(fp) {
if(!_.find(fp.client, { ua: ua })) {
fp.client.push(clientFingerprint);
fp.save(function(err, fp) {
if(err) console.error(err);
res.status(201);
next();
});
} else {
next();
}
} else {
next();
}
});
} else {
res.status(200);
next();
}
}
};
};