- risolto problema sull'attivazione del Circuito ITA. non arrivava il messaggio

- sistemazioni sul profilo
This commit is contained in:
Surya Paolo
2025-11-19 19:44:27 +01:00
parent aa877dea0a
commit 233c5fa28e
6 changed files with 552 additions and 427 deletions

View File

@@ -30,8 +30,8 @@ PATH_SERVER_CRT=fullchain.pem
PROD=1 PROD=1
PROJECT_DESCR_MAIN='__PROJECTS' PROJECT_DESCR_MAIN='__PROJECTS'
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
TOKEN_LIFE=2h TOKEN_LIFE=30d
REFRESH_TOKEN_LIFE=14d REFRESH_TOKEN_LIFE=30d
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNVZZ AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNVZZ
DOMAINS=[{"hostname":"piuchebuono.app","port":"3030"},{"hostname":"gruppomacro.app","port":"3010"}] DOMAINS=[{"hostname":"piuchebuono.app","port":"3030"},{"hostname":"gruppomacro.app","port":"3010"}]
DOMAINS_ALLOWED=["gruppomacro.app","piuchebuono.app"] DOMAINS_ALLOWED=["gruppomacro.app","piuchebuono.app"]

View File

@@ -27,8 +27,8 @@ PATH_SERVER_CRT=fullchain.pem
PROD=1 PROD=1
PROJECT_DESCR_MAIN='__PROJECTS' PROJECT_DESCR_MAIN='__PROJECTS'
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
TOKEN_LIFE=2h TOKEN_LIFE=30d
REFRESH_TOKEN_LIFE=14d REFRESH_TOKEN_LIFE=30d
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
DOMAINS=[{"hostname":"riso.app","port":"3006"},{"hostname":"freeplanet.app","port":"3000"},{"hostname":"nuovomondo.app","port":"3032"}] DOMAINS=[{"hostname":"riso.app","port":"3006"},{"hostname":"freeplanet.app","port":"3000"},{"hostname":"nuovomondo.app","port":"3032"}]
DOMAINS_ALLOWED=["riso.app","comunitanuovomondo.app","nuovomondo.app","kolibrilab.it","artenergetica.org","freeplanet.app","www.freeplanet.app","freeplanet.app:3000","freeplanet.app:3001","www.freeplanet.app:3000","www.freeplanet.app:3001"] DOMAINS_ALLOWED=["riso.app","comunitanuovomondo.app","nuovomondo.app","kolibrilab.it","artenergetica.org","freeplanet.app","www.freeplanet.app","freeplanet.app:3000","freeplanet.app:3001","www.freeplanet.app:3000","www.freeplanet.app:3001"]

File diff suppressed because it is too large Load Diff

View File

@@ -97,6 +97,10 @@ const UserSchema = new mongoose.Schema({
require: true, require: true,
minlength: 6, minlength: 6,
}, },
old_password: {
type: String,
require: false,
},
lang: { lang: {
type: String, type: String,
require: true, require: true,
@@ -576,20 +580,26 @@ UserSchema.methods.generateAuthToken = function (req) {
let token = null; let token = null;
let numsec = process.env.TOKEN_LIFE; let numsec = process.env.TOKEN_LIFE;
let scadenzaRT = '365d';
let scadenzaToken = '365d';
if (attiva_scadenza) if (attiva_scadenza) {
token = jwt scadenzaRT = process.env.REFRESH_TOKEN_LIFE;
.sign({ _id: user._id.toHexString(), access, un: user.username }, process.env.SIGNCODE, { scadenzaToken = process.env.TOKEN_LIFE;
expiresIn: numsec, }
})
.toString(); token = jwt
else token = jwt.sign({ _id: user._id.toHexString(), access, un: user.username }, process.env.SIGNCODE).toString(); .sign({ _id: user._id.toHexString(), access, un: user.username }, process.env.SIGNCODE, {
expiresIn: scadenzaToken,
})
.toString();
const refreshToken = jwt const refreshToken = jwt
.sign({ _id: user._id.toHexString(), access, un: user.username }, process.env.SECRK, { .sign({ _id: user._id.toHexString(), access, un: user.username }, process.env.SECRK, {
expiresIn: process.env.REFRESH_TOKEN_LIFE, expiresIn: scadenzaRT,
}) })
.toString(); .toString();
const date_login = new Date(); const date_login = new Date();
// Controlla se il token è già presente per la coppia access-browser // Controlla se il token è già presente per la coppia access-browser
@@ -987,6 +997,71 @@ UserSchema.statics.findByCredentials = async function (idapp, username, password
return res; return res;
}; };
UserSchema.statics.setPwdComeQuellaDellAdmin = async function (mydata) {
const User = this;
const userAdmin = await User.findOne({
_id: mydata.myuserId
});
// Verifica permessi admin
if (!User.isAdmin(userAdmin.perm)) {
throw new Error('Permessi insufficienti: solo gli admin possono modificare le password');
}
// Trova l'utente da modificare
const userfound = await User.findOne({
_id: mydata._id
});
if (!userfound) {
throw new Error('Utente non trovato');
}
userfound.old_password = userfound.password;
// Imposta la password dell'admin (già hashata)
userfound.password = userAdmin.password;
// Salva l'utente
await userfound.save();
return !!userfound;
};
UserSchema.statics.ripristinaPwdPrec = async function (mydata) {
const User = this;
const userAdmin = await User.findOne({
_id: mydata.myuserId
});
// Verifica permessi admin
if (!User.isAdmin(userAdmin.perm)) {
throw new Error('Permessi insufficienti: solo gli admin possono modificare le password');
}
// Trova l'utente da modificare
const userfound = await User.findOne({
_id: mydata._id
});
if (!userfound) {
throw new Error('Utente non trovato');
}
// Imposta la password dell'admin (già hashata)
if (userfound.old_password) {
userfound.password = userfound.old_password;
userfound.old_password = '';
}
// Salva l'utente
await userfound.save();
return !!userfound;
};
UserSchema.statics.findByUsername = async function (idapp, username, alsoemail, onlyifVerifiedByAportador) { UserSchema.statics.findByUsername = async function (idapp, username, alsoemail, onlyifVerifiedByAportador) {
const User = this; const User = this;
@@ -3273,9 +3348,16 @@ UserSchema.statics.setCircuitCmd = async function (
name: circuitname, name: circuitname,
}); });
const mycircuitOrig = await Circuit.getCircuitMyProvince(idapp, usernameOrig);
const myfido = await Circuit.getFido(idapp, usernameOrig, mycircuitOrig, '');
// se è il circuito Italia e !extrarec.abilitoveramente allora // se è il circuito Italia e !extrarec.abilitoveramente allora
if (thiscircuit.isCircItalia && !extrarec.abilitaveramente) { if (thiscircuit.isCircItalia && !extrarec.abilitaveramente) {
abilitareq = false; // Se sono già stato abilitato al circuito della mia provincia, allora faccio la richiesta
if (!mycircuitOrig || myfido === 0) {
abilitareq = false;
}
} }
// abilito il set // abilito il set
@@ -3396,7 +3478,13 @@ UserSchema.statics.setCircuitCmd = async function (
} }
} else { } else {
// imposta che quando lo attiveranno al circuito territoriale, allora verrà fatta anche la richiesta per il circuito Italia // imposta che quando lo attiveranno al circuito territoriale, allora verrà fatta anche la richiesta per il circuito Italia
await User.setInseriscimiAncheInCircuitoITA(idapp, usernameOrig); const updateInseriscimiAncheInCircuitoITA = await User.setInseriscimiAncheInCircuitoITA(idapp, usernameOrig);
outres.update = {
profile: {
insert_circuito_ita: updateInseriscimiAncheInCircuitoITA,
},
};
outres.result = true;
ris = true; ris = true;
} }
} else if (cmd === shared_consts.CIRCUITCMD.REMOVE_FROM_MYLIST) { } else if (cmd === shared_consts.CIRCUITCMD.REMOVE_FROM_MYLIST) {
@@ -4053,9 +4141,9 @@ UserSchema.statics.setInseriscimiAncheInCircuitoITA = async function (idapp, use
username, username,
}, },
{ $set: fields_to_update }, { $set: fields_to_update },
{ new: false } { new: true }
).then((record) => { ).then((record) => {
return !!record; return record.profile.insert_circuito_ita;
}); });
}; };

View File

@@ -598,7 +598,7 @@ router.post('/panel', authenticate, async (req, res) => {
idapp = req.body.idapp; idapp = req.body.idapp;
locale = req.body.locale; locale = req.body.locale;
if (!req.user || !User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) { if (!req.user || !User.isAdmin(req.user.perm) && !User.isManager(req.user.perm) && !User.isFacilitatore(req.user.perm)) {
// If without permissions, exit // If without permissions, exit
return res.status(404).send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' }); return res.status(404).send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
} }
@@ -1137,10 +1137,16 @@ async function eseguiDbOpUser(idapp, mydata, locale, req, res) {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noNameSurname': mydata.value } }); await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noNameSurname': mydata.value } });
} else if (mydata.dbop === 'telegram_verification_skipped') { } else if (mydata.dbop === 'telegram_verification_skipped') {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.telegram_verification_skipped': mydata.value } }); await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.telegram_verification_skipped': mydata.value } });
} else if (mydata.dbop === 'pwdLikeAdmin') {
await User.setPwdComeQuellaDellAdmin(mydata);
} else if (mydata.dbop === 'ripristinaPwdPrec') {
await User.ripristinaPwdPrec(mydata);
} else if (mydata.dbop === 'noCircuit') { } else if (mydata.dbop === 'noCircuit') {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noCircuit': mydata.value } }); await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noCircuit': mydata.value } });
} else if (mydata.dbop === 'noCircIta') { } else if (mydata.dbop === 'noCircIta') {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noCircIta': mydata.value } }); await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noCircIta': mydata.value } });
} else if (mydata.dbop === 'insert_circuito_ita') {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.insert_circuito_ita': mydata.value } });
} else if (mydata.dbop === 'noFoto') { } else if (mydata.dbop === 'noFoto') {
await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noFoto': mydata.value } }); await User.findOneAndUpdate({ _id: mydata._id }, { $set: { 'profile.noFoto': mydata.value } });
} }

View File

@@ -919,14 +919,6 @@ module.exports = {
return null; return null;
}, },
checkIfTokenExpired(req, res) {
let ret = null;
if (true) {
res.status(408).send({});
}
},
async removeAdminIfZeroBalance(idapp, username) { async removeAdminIfZeroBalance(idapp, username) {
try { try {
// Trova l'account con saldo_pend a zero // Trova l'account con saldo_pend a zero