- Manage multiple login, in different browsers... Multi Token...
This commit is contained in:
@@ -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
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user