- primo aggiornamento myreccard
- aggiunta sito germogliamo.app - aggiornato login con il parametro "browser_random" che serve per fare un login anche su 2 pagine contemporaneamente.
This commit is contained in:
@@ -136,6 +136,10 @@ const UserSchema = new mongoose.Schema({
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
browser_random: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
date_login: {
|
||||
type: Date,
|
||||
},
|
||||
@@ -571,7 +575,7 @@ UserSchema.methods.toJSON = function () {
|
||||
return _.pick(userObject, ['_id', ...shared_consts.fieldsUserToChange()]);
|
||||
};
|
||||
|
||||
UserSchema.methods.generateAuthToken = function (req) {
|
||||
UserSchema.methods.generateAuthToken = function (req, browser_random) {
|
||||
const user = this;
|
||||
|
||||
const useragent = req.get('User-Agent');
|
||||
@@ -607,13 +611,24 @@ UserSchema.methods.generateAuthToken = function (req) {
|
||||
|
||||
const date_login = new Date();
|
||||
|
||||
// Controlla se il token è già presente per la coppia access-browser
|
||||
const idx = user.tokens.findIndex((tok) => tok.access === access && tok.browser === browser);
|
||||
/*
|
||||
if (user.tokens) {
|
||||
console.log('token salvati: ' + user.tokens.length);
|
||||
} else {
|
||||
console.log('⚠️ Nessun Token salvato! ');
|
||||
}*/
|
||||
|
||||
// Controlla se il token è già presente per la tripla access-browser-browser_random
|
||||
const idx = user.tokens.findIndex(
|
||||
(tok) =>
|
||||
tok.access === access && tok.browser === browser && (!browser_random || tok.browser_random === browser_random)
|
||||
);
|
||||
|
||||
if (idx === -1) {
|
||||
user.tokens.push({ access, browser, token, date_login, refreshToken });
|
||||
user.tokens.push({ access, browser, token, date_login, refreshToken, browser_random });
|
||||
} else {
|
||||
// Se il token esiste già, sostituisce il valore vecchio con il nuovo
|
||||
user.tokens[idx] = { access, browser, token, date_login, refreshToken };
|
||||
user.tokens[idx] = { access, browser, token, date_login, refreshToken, browser_random };
|
||||
}
|
||||
|
||||
user.lasttimeonline = new Date();
|
||||
@@ -622,11 +637,11 @@ UserSchema.methods.generateAuthToken = function (req) {
|
||||
.save()
|
||||
.then(() => {
|
||||
console.log('########## HO CREATO UN NUOVO TOKEN E REFRESHTOKEN !!!!! ----------- ');
|
||||
return { token, refreshToken };
|
||||
return { token, refreshToken, browser_random };
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log('Error', err.message);
|
||||
return { token: '', refreshToken: '' };
|
||||
return { token: '', refreshToken: '', browser_random };
|
||||
});
|
||||
};
|
||||
|
||||
@@ -802,7 +817,16 @@ UserSchema.statics.isFacilitatore = function (perm) {
|
||||
*/
|
||||
|
||||
// Funzione helper separata per trovare l'utente
|
||||
async function findUserByTokenAndAccess(User, decoded, token, typeaccess, withuser, withlean, project) {
|
||||
async function findUserByTokenAndAccessAndBrowserRandom(
|
||||
User,
|
||||
decoded,
|
||||
token,
|
||||
typeaccess,
|
||||
browser_random,
|
||||
withuser,
|
||||
withlean,
|
||||
project
|
||||
) {
|
||||
try {
|
||||
const query = {
|
||||
_id: decoded._id,
|
||||
@@ -810,6 +834,7 @@ async function findUserByTokenAndAccess(User, decoded, token, typeaccess, withus
|
||||
$elemMatch: {
|
||||
token,
|
||||
access: typeaccess,
|
||||
browser_random,
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -829,6 +854,7 @@ async function findUserByTokenAndAccess(User, decoded, token, typeaccess, withus
|
||||
$elemMatch: {
|
||||
token,
|
||||
access: typeaccess,
|
||||
browser_random,
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -842,7 +868,14 @@ async function findUserByTokenAndAccess(User, decoded, token, typeaccess, withus
|
||||
}
|
||||
|
||||
// Funzione principale refactored
|
||||
UserSchema.statics.findByToken = async function (token, typeaccess, con_auth, withuser, withlean = false) {
|
||||
UserSchema.statics.findByToken = async function (
|
||||
token,
|
||||
typeaccess,
|
||||
browser_random,
|
||||
con_auth,
|
||||
withuser,
|
||||
withlean = false
|
||||
) {
|
||||
const User = this;
|
||||
let code = server_constants.RIS_CODE_HTTP_INVALID_TOKEN;
|
||||
let user = null;
|
||||
@@ -884,7 +917,16 @@ UserSchema.statics.findByToken = async function (token, typeaccess, con_auth, wi
|
||||
};
|
||||
|
||||
// Ricerca utente con funzione separata
|
||||
user = await findUserByTokenAndAccess(User, decoded, token, typeaccess, withuser, withlean, project);
|
||||
user = await findUserByTokenAndAccessAndBrowserRandom(
|
||||
User,
|
||||
decoded,
|
||||
token,
|
||||
typeaccess,
|
||||
browser_random,
|
||||
withuser,
|
||||
withlean,
|
||||
project
|
||||
);
|
||||
|
||||
// Verifica scadenza token per idapp specifici
|
||||
if (user) {
|
||||
@@ -1634,7 +1676,6 @@ UserSchema.statics.setAmmissioneByTokenAndUsername = async function (idapp, user
|
||||
const User = this;
|
||||
|
||||
try {
|
||||
|
||||
if (username === undefined) return false;
|
||||
|
||||
const myquery = {
|
||||
@@ -1660,7 +1701,11 @@ UserSchema.statics.setAmmissioneByTokenAndUsername = async function (idapp, user
|
||||
return recfound;
|
||||
}
|
||||
|
||||
const rec = await User.findOneAndUpdate(myquery, { $set: { token_da_ammettere: token, date_token_ammettere: new Date(), } }, { new: true });
|
||||
const rec = await User.findOneAndUpdate(
|
||||
myquery,
|
||||
{ $set: { token_da_ammettere: token, date_token_ammettere: new Date() } },
|
||||
{ new: true }
|
||||
);
|
||||
return rec;
|
||||
} catch (e) {
|
||||
console.error('Error setAmmissione', e);
|
||||
@@ -1677,7 +1722,13 @@ UserSchema.statics.findAmmissioneByTokenAndUsername = async function (idapp, tok
|
||||
token_da_ammettere: token,
|
||||
};
|
||||
|
||||
const rec = await User.findOne(myquery, { verified_by_aportador: 1, username: 1, aportador_solidario: 1, idapp: 1, lang: 1 });
|
||||
const rec = await User.findOne(myquery, {
|
||||
verified_by_aportador: 1,
|
||||
username: 1,
|
||||
aportador_solidario: 1,
|
||||
idapp: 1,
|
||||
lang: 1,
|
||||
});
|
||||
return rec && username.toLowerCase() === rec.username.toLowerCase() ? rec : null;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user