var UAParser = require('ua-parser-js'); var parser = new UAParser(); module.exports = function(config, mongoose) { var Fingerprint = mongoose.model('Fingerprint'); return function userAgent(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' ]); if(!_.isEmpty(req.query)) var ip = req.ip; Fingerprint.findById( req.query.id, function(err, fp) { if(err) return next(err); if(fp) { if(!_.find(fp.server, { ua: ua })) { var obj = { ip: ip, ua: ua, uaParsed: uaParsed, headers: headers }; fp.server.push(obj); fp.save(function(err, fp) { if(err) console.error(err); }); } } }); res.locals = { ua: ua, uaParsed: uaParsed, headers: headers }; next(); }; };