From 00ce3bd919ad89c36c96bb18a50f12f393308d47 Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Tue, 18 Nov 2025 11:19:40 +0100 Subject: [PATCH] corretto bug GruppoMacro la lista veniva salvata ma anche aggiornata in memoria con solo gli ID... in questo caso TABLES_NON_AGGIORNARE_IN_MEMORIA_PERCHE_DIVERSA_STRUTTURA gli dice che alcune tabelle non devono essere aggiornate in memoria. --- .env.dev.riso | 2 +- .env.development | 15 ++-- src/models/listainvitiemail.js | 87 +++++++++++++++++++ src/router/index_router.js | 1 + src/router/invitaAmicoRoutes.js | 36 ++++++++ src/sendemail.js | 6 +- ...dex_router.js => index_router_NONUSATO.js} | 0 7 files changed, 138 insertions(+), 9 deletions(-) create mode 100755 src/models/listainvitiemail.js rename src/server/router/{index_router.js => index_router_NONUSATO.js} (100%) diff --git a/.env.dev.riso b/.env.dev.riso index 7013049..7bca35d 100644 --- a/.env.dev.riso +++ b/.env.dev.riso @@ -29,7 +29,7 @@ GCM_API_KEY="" PROD=0 PROJECT_DESCR_MAIN='__PROJECTS' SECRK=Askb38v23jjDFaoskBOWj92axXCQ -TOKEN_LIFE=1m +TOKEN_LIFE=10m REFRESH_TOKEN_LIFE=14d FTPSERVER_HOST=139.162.166.31 FTPSERVER_PORT=21 diff --git a/.env.development b/.env.development index 59a1a35..076722d 100644 --- a/.env.development +++ b/.env.development @@ -1,12 +1,12 @@ -DATABASE=test_FreePlanet +DATABASE=test_PiuCheBuono UDB=paofreeplanet PDB=mypassword@1A SEND_EMAIL=0 SEND_EMAIL_ORDERS=1 PORT=3000 -appTelegram_TEST=["1","13"] -appTelegram=["1","13"] -appTelegram_DEVELOP=["13"] +appTelegram_TEST=["1","17"] +appTelegram=["1","17"] +appTelegram_DEVELOP=["17"] DOMAIN=mongodb://localhost:27017/ AUTH_MONGODB=0 ENABLE_PUSHNOTIFICATION=1 @@ -29,7 +29,7 @@ GCM_API_KEY="" PROD=0 PROJECT_DESCR_MAIN='__PROJECTS' SECRK=Askb38v23jjDFaoskBOWj92axXCQ -TOKEN_LIFE=30m +TOKEN_LIFE=2h REFRESH_TOKEN_LIFE=14d FTPSERVER_HOST=139.162.166.31 FTPSERVER_PORT=21 @@ -38,4 +38,9 @@ FTPSERVER_PWD=ftpmypwd@1A_ AUTH_NEW_SITES=123123123 SCRIPTS_DIR=admin_scripts CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}] +MIAB_HOST=box.lamiaposta.org +MIAB_ADMIN_EMAIL=admin@lamiaposta.org +MIAB_ADMIN_PASSWORD=passpao1pabox@1A DS_API_KEY="sk-222e3addb3d8455d8b0516d93906eec7" +SERVER_A_URL="http://51.77.156.69:3000" +API_KEY_MSSQL="m68yADSr123MIVIDA@154$DSAGVOK" \ No newline at end of file diff --git a/src/models/listainvitiemail.js b/src/models/listainvitiemail.js new file mode 100755 index 0000000..dea817d --- /dev/null +++ b/src/models/listainvitiemail.js @@ -0,0 +1,87 @@ +const mongoose = require('mongoose').set('debug', false) +const Schema = mongoose.Schema; + +const tools = require('../tools/general'); + +mongoose.Promise = global.Promise; +mongoose.level = "F"; + + +// Resolving error Unknown modifier: $pushAll +mongoose.plugin(schema => { + schema.options.usePushEach = true +}); + +const ListaInvitiEmailSchema = new Schema({ + idapp: { + type: String, + }, + email: { + type: String, + trim: true, + }, + userIdInvite: { + type: String, + }, + date_Invited: { + type: Date, + default: Date.now, + }, + clicked: { + type: Boolean, + default: false, + }, + registered: { + type: Boolean, + default: false, + }, + userIdRegistered: { + type: String, + }, + token: { + type: String, + }, +}); + +var ListaInvitiEmail = module.exports = mongoose.model('ListaInvitiEmail', ListaInvitiEmailSchema); + +module.exports.getFieldsForSearch = function () { + return [{ field: 'email', type: tools.FieldType.string }] +}; + + + +module.exports.executeQueryTable = function (idapp, params) { + params.fieldsearch = this.getFieldsForSearch(); + return tools.executeQueryTable(this, idapp, params); +}; + +module.exports.getLastRec = async function (idapp) { + const lastrec = await ListaInvitiEmail.find({ idapp }).sort({ dateofreg: -1 }).limit(1); + if (!!lastrec) { + return lastrec[0]; + } else { + return null; + } +}; + +module.exports.findByEmail = function (idapp, email) { + + return ListaInvitiEmail.findOne({ + 'idapp': idapp, + 'email': email, + }); +}; + + +module.exports.findAllIdApp = async function (idapp) { + + const myfind = { idapp }; + + return await tools.findAllQueryIdApp(this, myfind); +}; + +module.exports.createIndexes() + .then(() => { }) + .catch((err) => { throw err; }); + diff --git a/src/router/index_router.js b/src/router/index_router.js index eab6af8..13392fa 100755 --- a/src/router/index_router.js +++ b/src/router/index_router.js @@ -533,6 +533,7 @@ router.post('/settable', authenticate, async (req, res) => { } } + return await myPromise .then(async (doupdate) => { if (false) { diff --git a/src/router/invitaAmicoRoutes.js b/src/router/invitaAmicoRoutes.js index 5be9062..d129f0b 100644 --- a/src/router/invitaAmicoRoutes.js +++ b/src/router/invitaAmicoRoutes.js @@ -38,6 +38,42 @@ router.post('/invia-email', authenticate, async (req, res) => { const dati = { messaggioPersonalizzato, emailAmico, usernameInvitante }; + const userInvitante = await User.findOne({ idapp, username: usernameInvitante }, { username: 1 }); + + const invitoesiste = await ListaInvitiEmail.findOne({ idapp, email }); + if (invitoesiste) { + const dateInvito = new Date(invitoesiste.date_Invited); + const dateNow = new Date(); + const diffTime = Math.abs(dateNow - dateInvito); + const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24 * 7)); + + if (diffDays > 7) { + // Posso reinviare l'invito + await ListaInvitiEmail.deleteOne({ _id: invitoesiste._id }); + invitoesiste = null; + } else { + return res.status(200).json({ + success: false, + message: `L'invito a questa email è stato già inviato il ${dateInvito.toDateString()}`, + emailInviata: false, + }); + } + } + + const token = crypto.createHash('sha256').update(JSON.stringify(dati)).digest('hex'); + + dati.token = token; + + // aggiungi la email alla lista inviti + const listainviti = new ListaInvitiEmail({ + idapp, + email: emailAmico, + userIdInvite: userInvitante.username, + token, + }); + + await listainviti.save(); + const ris = await sendemail.sendEmail_InvitaAmico('it', emailAmico, null, idapp, dati); if (ris) { diff --git a/src/sendemail.js b/src/sendemail.js index b1e75af..37b4800 100755 --- a/src/sendemail.js +++ b/src/sendemail.js @@ -494,8 +494,8 @@ module.exports = { const strlinkreg = tools.getHostByIdApp(idapp) + process.env.LINKVERIF_REG + `/?idapp=${idapp}&idlink=${idreg}`; return strlinkreg; }, - getlinkInvitoReg: function (idapp, usernameInvitante) { - const strlinkreg = tools.getHostByIdApp(idapp) + process.env.LINK_INVITO_A_REG + `/?idapp=${idapp}&inv=${usernameInvitante}`; + getlinkInvitoReg: function (idapp, dati) { + const strlinkreg = tools.getHostByIdApp(idapp) + process.env.LINK_INVITO_A_REG + `/?idapp=${idapp}&tok=${dati.token}`; return strlinkreg; }, sendEmail_Registration: async function (lang, emailto, user, idapp, idreg) { @@ -556,7 +556,7 @@ module.exports = { nomeapp: tools.getNomeAppByIdApp(idapp), strlinksito: tools.getHostByIdApp(idapp), //strlinkreg: this.getlinkReg(idapp, idreg), - linkRegistrazione: this.getlinkInvitoReg(idapp, dati.usernameInvitante), + linkRegistrazione: this.getlinkInvitoReg(idapp, dati), emailto: emailto, usernameInvitante: dati.usernameInvitante, messaggioPersonalizzato: dati.messaggioPersonalizzato, diff --git a/src/server/router/index_router.js b/src/server/router/index_router_NONUSATO.js similarity index 100% rename from src/server/router/index_router.js rename to src/server/router/index_router_NONUSATO.js