- Manage multiple login, in different browsers... Multi Token...

This commit is contained in:
Paolo Arena
2019-02-09 18:03:14 +01:00
parent 318ff7a798
commit 636ee92786
8 changed files with 50 additions and 28 deletions

View File

@@ -4,6 +4,8 @@ const validator = require('validator');
const jwt = require('jsonwebtoken');
const _ = require('lodash');
const tools = require('../tools/general');
mongoose.Promise = global.Promise;
mongoose.level = "F";
@@ -80,19 +82,23 @@ UserSchema.methods.toJSON = function () {
return _.pick(userObject, ['_id', 'email', 'verified_email', 'username', 'userId']);
};
UserSchema.methods.generateAuthToken = function () {
UserSchema.methods.generateAuthToken = function (req) {
// console.log("GENERA TOKEN : ");
var user = this;
var access = 'auth';
const useragent = req.get('User-Agent');
tools.mylog("GENERATE USER-AGENT = ", useragent);
var access = 'auth ' + useragent;
var token = jwt.sign({ _id: user._id.toHexString(), access }, process.env.SIGNCODE).toString();
// CANCELLA I PRECEDENTI !
user.tokens = [];
// CANCELLA IL PRECEDENTE !
user.tokens = user.tokens.filter(function(tok) { return tok.access !== access; });
user.tokens.push({ access, token });
return user.save()
.then(() => {
//console.log("TOKEN USCITA : " + token)
console.log("TOKEN CREATO IN LOGIN : " + token)
return token;
})
.catch(err => {
@@ -100,20 +106,20 @@ UserSchema.methods.generateAuthToken = function () {
});
};
UserSchema.statics.findByToken = function (token) {
UserSchema.statics.findByToken = function (token, typeaccess) {
var User = this;
var decoded;
try {
decoded = jwt.verify(token, process.env.SIGNCODE);
} catch (e) {
return Promise.reject();
return Promise.resolve(null);
}
return User.findOne({
'_id': decoded._id,
'tokens.token': token,
'tokens.access': 'auth'
'tokens.access': typeaccess
});
};