67 lines
1.3 KiB
JavaScript
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();
|
|
}
|
|
}
|
|
};
|
|
};
|