From 3eef70f3f374bac1b5e3f1dae29b1b46264f088e Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Sun, 11 Dec 2022 02:57:35 +0100 Subject: [PATCH] ++ diffusori fixed user chip --- mongodb/Diffusori.mongodb | 100 ++++ src/server/models/user.js | 129 ++++- src/server/router/index_router.js | 850 +++++++++++++++--------------- src/server/router/site_router.js | 1 + src/server/sendemail.js | 3 +- 5 files changed, 663 insertions(+), 420 deletions(-) create mode 100644 mongodb/Diffusori.mongodb diff --git a/mongodb/Diffusori.mongodb b/mongodb/Diffusori.mongodb new file mode 100644 index 0000000..110a3dd --- /dev/null +++ b/mongodb/Diffusori.mongodb @@ -0,0 +1,100 @@ +// MongoDB Playground +// To disable this template go to Settings | MongoDB | Use Default Template For Playground. +// Make sure you are connected to enable completions and to be able to run a playground. +// Use Ctrl+Space inside a snippet or a string literal to trigger completions. + +// Select the database to use. +use('test_FreePlanet'); + +let aggregation = [ + { + $match: { + idapp: "13", + $or: [ + { + deleted: { + $exists: false, + }, + }, + { + deleted: { + $exists: true, + $eq: false, + }, + }, + ], + }, + }, + { + $group: { + _id: "$aportador_solidario", + count: { + $sum: 1, + }, + }, + }, + { + $match: { "count": { $gte: 2 } } + }, + { + $sort: { + count: -1, + }, + }, + { + $lookup: { + from: "users", + let: { + username: "$_id", + idapp: "13", + }, + pipeline: [ + { + $match: { + $expr: { + $and: [ + { + $eq: [ + "$$username", + "$username", + ], + }, + { + $eq: [ + "$$idapp", + "$idapp", + ], + }, + ], + }, + }, + }, + ], + as: "user", + }, + }, + { $unwind: "$user" }, + { + $replaceRoot: { + newRoot: { + $mergeObjects: [ "$user", "$$ROOT" ], + }, + }, + }, + { + $project: { + _id: 0, + count: 1, + aportador_solidario: 1, + username: 1, + name: 1, + surname: 1, + lasttimeonline: 1, + idapp: 1, + "profile.img": 1, + }, + }, +]; + +db.users.aggregate(aggregation); + diff --git a/src/server/models/user.js b/src/server/models/user.js index b50b5ca..b4553f0 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -136,6 +136,9 @@ const UserSchema = new mongoose.Schema({ tokenforgot: { type: String, }, + tokenforgot_code: { + type: String, + }, date_tokenreg: { type: Date, }, @@ -1164,6 +1167,17 @@ UserSchema.statics.findByLinkTokenforgot = function (idapp, email, tokenforgot) }); }; +UserSchema.statics.findByLinkTokenforgotCode = function (idapp, email, tokenforgot_code) { + const User = this; + + return User.findOne({ + email, + tokenforgot_code, + date_tokenforgot: { $gte: tools.IncDateNow(-1000 * 60 * 60 * 4) }, // 4 ore fa! + idapp, + }); +}; + UserSchema.statics.createNewRequestPwd = function (idapp, email) { const User = this; @@ -1177,9 +1191,10 @@ UserSchema.statics.createNewRequestPwd = function (idapp, email) { user.tokenforgot = jwt.sign(user._id.toHexString(), process.env.SIGNCODE). toString(); user.date_tokenforgot = new Date(); + user.tokenforgot_code = 100000 + Math.round(Math.random() * 899999); user.lasttimeonline = new Date(); return await user.save().then(async () => { - await sendemail.sendEmail_RequestNewPassword(user.lang, user, user.email, user.idapp, user.tokenforgot); + await sendemail.sendEmail_RequestNewPassword(user.lang, user, user.email, user.idapp, user.tokenforgot, user.tokenforgot_code); return true; }); @@ -1202,10 +1217,12 @@ UserSchema.statics.createNewRequestPwdByUsernameAndGetLink = async function (ida user.tokenforgot = jwt.sign(user._id.toHexString(), process.env.SIGNCODE). toString(); user.date_tokenforgot = new Date(); + user.tokenforgot_code = 100000 + Math.round(Math.random() * 899999); user.lasttimeonline = new Date(); + user.code_pwd_reset = 0; return await user.save().then(() => { - return tools.getlinkRequestNewPassword(idapp, user.email, user.tokenforgot); + return tools.getlinkRequestNewPassword(idapp, user.email, user.tokenforgot, user.tokenforgot_code); }); } @@ -3501,6 +3518,18 @@ UserSchema.statics.getLastOnlineUsers = async function (idapp) { }; +UserSchema.statics.getDiffusoriUsers = async function (idapp) { + const User = this; + + const lastn = 10; + + return await User.aggregate(User.getQueryUsersDiffusori(idapp)).then(ris => { + // console.table(ris); + return ris; + }); + +}; + UserSchema.statics.checkUser = async function (idapp, username) { const User = this; @@ -3580,6 +3609,7 @@ UserSchema.statics.findAllDistinctNationality = async function (idapp) { }); }; + UserSchema.statics.getUsersRegDaily = function (idapp, nrec) { const query = [ @@ -3611,6 +3641,101 @@ UserSchema.statics.getUsersRegDaily = function (idapp, nrec) { return query; }; +UserSchema.statics.getQueryUsersDiffusori = function (idapp) { + + const query = [ + { + $match: { + idapp, + $or: [ + { + deleted: { + $exists: false, + }, + }, + { + deleted: { + $exists: true, + $eq: false, + }, + }, + ], + }, + }, + { + $group: { + _id: "$aportador_solidario", + count: { + $sum: 1, + }, + }, + }, + { + $match: { "count": { $gte: 2 } } + }, + { + $sort: { + count: -1, + }, + }, + { $limit: 20 }, + { + $lookup: { + from: "users", + let: { + username: "$_id", + idapp, + }, + pipeline: [ + { + $match: { + $expr: { + $and: [ + { + $eq: [ + "$$username", + "$username", + ], + }, + { + $eq: [ + "$$idapp", + "$idapp", + ], + }, + ], + }, + }, + }, + ], + as: "user", + }, + }, + { $unwind: "$user" }, + { + $replaceRoot: { + newRoot: { + $mergeObjects: [ "$user", "$$ROOT" ], + }, + }, + }, + { + $project: { + _id: 0, + count: 1, + aportador_solidario: 1, + username: 1, + name: 1, + surname: 1, + lasttimeonline: 1, + idapp: 1, + "profile.img": 1, + }, + }, + ]; + return query; +}; + UserSchema.statics.getUsersRegWeekly = function (idapp, nrec) { const query = [ diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 61137b3..b8bf5d9 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -1,21 +1,21 @@ const express = require('express'); const router = express.Router(), - fs = require('fs'), - path = require('path'); + fs = require('fs'), + path = require('path'); const telegrambot = require('../telegram/telegrambot'); const sharp = require('sharp'); -const {authenticate, authenticate_noerror} = require( - '../middleware/authenticate'); +const { authenticate, authenticate_noerror } = require( + '../middleware/authenticate'); -const {ObjectID} = require('mongodb'); +const { ObjectID } = require('mongodb'); // const {ListaIngresso} = require('../models/listaingresso'); -const {Graduatoria} = require('../models/graduatoria'); +const { Graduatoria } = require('../models/graduatoria'); const mongoose = require('mongoose').set('debug', false); -const {CfgServer} = require('../models/cfgserver'); +const { CfgServer } = require('../models/cfgserver'); // const uuidv4 = require('uuid/v4'); // I chose v4 ‒ you can select others @@ -29,36 +29,36 @@ if (!fs.existsSync(folder)) { const _ = require('lodash'); -const {User} = require('../models/user'); -const {MyGroup} = require('../models/mygroup'); -const {Circuit} = require('../models/circuit'); -const {Booking} = require('../models/booking'); -const {Operator} = require('../models/operator'); -const {Where} = require('../models/where'); -const {MyEvent} = require('../models/myevent'); -const {Contribtype} = require('../models/contribtype'); -const {PaymentType} = require('../models/paymenttype'); -const {Discipline} = require('../models/discipline'); -const {MyElem} = require('../models/myelem'); -const {Skill} = require('../models/skill'); -const {Good} = require('../models/good'); -const {StatusSkill} = require('../models/statusSkill'); -const {Province} = require('../models/province'); -const {Sector} = require('../models/sector'); -const {SectorGood} = require('../models/sectorgood'); -const {CatGrp} = require('../models/catgrp'); +const { User } = require('../models/user'); +const { MyGroup } = require('../models/mygroup'); +const { Circuit } = require('../models/circuit'); +const { Booking } = require('../models/booking'); +const { Operator } = require('../models/operator'); +const { Where } = require('../models/where'); +const { MyEvent } = require('../models/myevent'); +const { Contribtype } = require('../models/contribtype'); +const { PaymentType } = require('../models/paymenttype'); +const { Discipline } = require('../models/discipline'); +const { MyElem } = require('../models/myelem'); +const { Skill } = require('../models/skill'); +const { Good } = require('../models/good'); +const { StatusSkill } = require('../models/statusSkill'); +const { Province } = require('../models/province'); +const { Sector } = require('../models/sector'); +const { SectorGood } = require('../models/sectorgood'); +const { CatGrp } = require('../models/catgrp'); const Site = require('../models/site'); -const {Level} = require('../models/level'); -const {AdType} = require('../models/adtype'); -const {AdTypeGood} = require('../models/adtypegood'); -const {Newstosent} = require('../models/newstosent'); -const {MyPage} = require('../models/mypage'); -const {CalZoom} = require('../models/calzoom'); -const {Gallery} = require('../models/gallery'); -const {Settings} = require('../models/settings'); -const {SendMsg} = require('../models/sendmsg'); -const {SendNotif} = require('../models/sendnotif'); -const {Permission} = require('../models/permission'); +const { Level } = require('../models/level'); +const { AdType } = require('../models/adtype'); +const { AdTypeGood } = require('../models/adtypegood'); +const { Newstosent } = require('../models/newstosent'); +const { MyPage } = require('../models/mypage'); +const { CalZoom } = require('../models/calzoom'); +const { Gallery } = require('../models/gallery'); +const { Settings } = require('../models/settings'); +const { SendMsg } = require('../models/sendmsg'); +const { SendNotif } = require('../models/sendnotif'); +const { Permission } = require('../models/permission'); const Producer = require('../models/producer'); const Cart = require('../models/cart'); const OrdersCart = require('../models/orderscart'); @@ -121,7 +121,7 @@ router.post(process.env.LINKVERIF_REG, (req, res) => { res.send({ code: server_constants.RIS_CODE_EMAIL_VERIFIED, msg: tools.getres__('EMAIL', res) + ' ' + - tools.getres__('VERIF', res), + tools.getres__('VERIF', res), }); }); } @@ -139,76 +139,92 @@ router.post(process.env.LINK_REQUEST_NEWPASSWORD, async (req, res) => { const idapp = body.idapp; const email = body.email.toLowerCase().trim(); console.log( - 'POST ' + process.env.LINK_REQUEST_NEWPASSWORD + ' idapp= ' + idapp + - ' email = ' + email); + 'POST ' + process.env.LINK_REQUEST_NEWPASSWORD + ' idapp= ' + idapp + + ' email = ' + email); try { const ris = await User.createNewRequestPwd(idapp, email); if (ris) { - res.send({code: server_constants.RIS_CODE_OK, msg: ''}); + res.send({ code: server_constants.RIS_CODE_OK, msg: '' }); } else { tools.snooze(5000); return res.status(200). - send({code: server_constants.RIS_CODE_EMAIL_NOT_EXIST, msg: ''}); + send({ code: server_constants.RIS_CODE_EMAIL_NOT_EXIST, msg: '' }); } } catch (e) { console.log(process.env.LINK_REQUEST_NEWPASSWORD, e.message); res.status(400).send(); - res.send({code: server_constants.RIS_CODE_ERR, msg: e}); + res.send({ code: server_constants.RIS_CODE_ERR, msg: e }); } }); // Invio la Nuova Password richiesta dal reset! // Ritorna il token per poter effettuare le chiamate... -router.post(process.env.LINK_UPDATE_PWD, (req, res) => { - const body = _.pick(req.body, ['idapp', 'email', 'tokenforgot', 'password']); +router.post(process.env.LINK_UPDATE_PWD, async (req, res) => { + const body = _.pick(req.body, ['idapp', 'email', 'tokenforgot', 'tokenforgot_code', 'password']); const idapp = body.idapp; const email = body.email.toLowerCase().trim(); const tokenforgot = body.tokenforgot; + const tokenforgot_code = body.tokenforgot_code; const password = body.password; const msg = 'Richiesta Nuova Password: idapp= ' + idapp + ' email = ' + email; console.log(msg); // telegrambot.sendMsgTelegramToTheManagers(body.idapp, msg); - User.findByLinkTokenforgot(idapp, email, tokenforgot).then((user) => { - if (!user) { - return res.send( - {code: server_constants.RIS_CODE_TOKEN_RESETPASSWORD_NOT_FOUND}); - } else { - // aggiorna la nuova password - user.password = password; - user.lasttimeonline = new Date(); + let user = null; - // Crea token - user.generateAuthToken(req).then(token => { - user.tokenforgot = ''; // Svuota il tokenforgot perché non ti servirà più... + user = await User.findByLinkTokenforgot(idapp, email, tokenforgot) + .then((user) => { + return user; + }).catch((e) => { + console.log(process.env.LINK_UPDATE_PWD, e.message); + res.status(400).send(); + }); - // Salva lo User - user.save().then(() => { - res.header('x-auth', token). - send({code: server_constants.RIS_CODE_OK}); // Ritorna il token di ritorno - }); + if (!user) { + user = await User.findByLinkTokenforgotCode(idapp, email, tokenforgot_code) + .then((user) => { + return user; + }).catch((e) => { + console.log(process.env.LINK_UPDATE_PWD, e.message); + res.status(400).send(); }); - } - }).catch((e) => { - console.log(process.env.LINK_UPDATE_PWD, e.message); - res.status(400).send(); - }); + } + if (!user) { + return res.send( + { code: server_constants.RIS_CODE_TOKEN_RESETPASSWORD_NOT_FOUND }); + } else { + // aggiorna la nuova password + user.password = password; + user.lasttimeonline = new Date(); + + // Crea token + user.generateAuthToken(req).then(token => { + user.tokenforgot = ''; // Svuota il tokenforgot perché non ti servirà più... + user.tokenforgot_code = ''; // Svuota il tokenforgot perché non ti servirà più... + + // Salva lo User + user.save().then(() => { + res.header('x-auth', token). + send({ code: server_constants.RIS_CODE_OK }); // Ritorna il token di ritorno + }); + }); + } }); router.post('/testServer', authenticate_noerror, async (req, res) => { try { const test = req.body.test; - let ris = {test}; + let ris = { test }; if (req.user) { await tools.sendNotificationToUser(req.user._id, 'Test Server', - 'Test Server OK', - '/', '', 'server', []); + 'Test Server OK', + '/', '', 'server', []); } return res.send(ris); @@ -223,12 +239,12 @@ router.get('/test1', authenticate_noerror, async (req, res) => { try { const test = req.query.test; - let ris = {test}; + let ris = { test }; if (req.user) { await tools.sendNotificationToUser(req.user._id, 'Test Server', - 'Test Server OK', - '/', '', 'server', []); + 'Test Server OK', + '/', '', 'server', []); } return res.send(ris); @@ -249,7 +265,7 @@ router.post('/settable', authenticate, async (req, res) => { delete mydata['extrarec']; } - const fieldsvalue = {'ALL': 1}; + const fieldsvalue = { 'ALL': 1 }; mydata.idapp = req.user.idapp; const idapp = mydata.idapp; @@ -258,16 +274,16 @@ router.post('/settable', authenticate, async (req, res) => { try { if (User.isAdmin(req.user.perm) || User.isManager(req.user.perm) || - User.isEditor(req.user.perm) || User.isFacilitatore(req.user.perm)) { + User.isEditor(req.user.perm) || User.isFacilitatore(req.user.perm)) { consentito = true; } if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm) && - !User.isEditor(req.user.perm) && !User.isFacilitatore(req.user.perm)) && - !tools.ModificheConsentite(params.table, fieldsvalue)) { + !User.isEditor(req.user.perm) && !User.isFacilitatore(req.user.perm)) && + !tools.ModificheConsentite(params.table, fieldsvalue)) { // If without permissions, exit return res.status(404). - send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); + send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' }); } if (shared_consts.TABLES_USER_ID.includes(params.table)) { @@ -294,7 +310,7 @@ router.post('/settable', authenticate, async (req, res) => { if (shared_consts.MYGROUPS_KEY_TO_CRYPTED in mydata) { if (mydata[shared_consts.MYGROUPS_KEY_TO_CRYPTED]) { mydata[shared_consts.MYGROUPS_KEY_TO_CRYPTED + - shared_consts.SUFFIX_CRYPTED] = tools.cryptdata( + shared_consts.SUFFIX_CRYPTED] = tools.cryptdata( mydata[shared_consts.MYGROUPS_KEY_TO_CRYPTED]); } } @@ -306,10 +322,10 @@ router.post('/settable', authenticate, async (req, res) => { // Aggiungi solo se non esistono Admin: mydata.admins = []; const indfind = mydata.admins.findIndex( - (rec) => (rec.username === req.user.username)); + (rec) => (rec.username === req.user.username)); if (indfind < 0) { - mydata.admins.push({username: req.user.username}); + mydata.admins.push({ username: req.user.username }); } } } @@ -327,7 +343,7 @@ router.post('/settable', authenticate, async (req, res) => { } if (shared_consts.TABLES_ID_NUMBER.includes(params.table) || - shared_consts.TABLES_ID_STRING.includes(params.table)) { + shared_consts.TABLES_ID_STRING.includes(params.table)) { } else if (params.table === 'hours') { @@ -341,23 +357,23 @@ router.post('/settable', authenticate, async (req, res) => { if (params.table === shared_consts.TAB_MYGROUPS && isnewrec) { // Controlla se esiste già con lo stesso nome - let alreadyexist = await MyGroup.findOne({idapp, groupname: mydata.groupname}); + let alreadyexist = await MyGroup.findOne({ idapp, groupname: mydata.groupname }); if (alreadyexist) { - return res.send({code: server_constants.RIS_CODE_REC_ALREADY_EXIST_CODE}); + return res.send({ code: server_constants.RIS_CODE_REC_ALREADY_EXIST_CODE }); } - alreadyexist = await MyGroup.findOne({idapp, title: mydata.title}); + alreadyexist = await MyGroup.findOne({ idapp, title: mydata.title }); if (alreadyexist) { - return res.send({code: server_constants.RIS_CODE_REC_ALREADY_EXIST_NAME}); + return res.send({ code: server_constants.RIS_CODE_REC_ALREADY_EXIST_NAME }); } } else if (params.table === shared_consts.TAB_MYCIRCUITS && isnewrec) { // Controlla se esiste già con lo stesso nome - let alreadyexist = await Circuit.findOne({idapp, name: mydata.name}); + let alreadyexist = await Circuit.findOne({ idapp, name: mydata.name }); if (alreadyexist) { - return res.send({code: server_constants.RIS_CODE_REC_ALREADY_EXIST_CODE}); + return res.send({ code: server_constants.RIS_CODE_REC_ALREADY_EXIST_CODE }); } - alreadyexist = await Circuit.findOne({idapp, path: mydata.path}); + alreadyexist = await Circuit.findOne({ idapp, path: mydata.path }); if (alreadyexist) { - return res.send({code: server_constants.RIS_CODE_REC_ALREADY_EXIST_NAME}); + return res.send({ code: server_constants.RIS_CODE_REC_ALREADY_EXIST_NAME }); } /*alreadyexist = await Circuit.findOne({idapp, symbol: mydata.symbol}); if (alreadyexist) { @@ -374,101 +390,101 @@ router.post('/settable', authenticate, async (req, res) => { // console.log('mydata',mydata); return await mytablerec.save(). - then(async (rec) => { + then(async (rec) => { - if (shared_consts.TABLES_GETCOMPLETEREC.includes(params.table)) { - return await mytablestrutt.getCompleteRecord(rec.idapp, rec._id); - } else { - return rec; + if (shared_consts.TABLES_GETCOMPLETEREC.includes(params.table)) { + return await mytablestrutt.getCompleteRecord(rec.idapp, rec._id); + } else { + return rec; + } + + // tools.mylog('rec', rec); + }).then(async (myrec) => { + + let setnotif = false; + let typedir = 0; + let typeid = 0; + let groupnameDest = ''; + let circuitnameDest = ''; + + if (isnewrec) { + // New Record created + + if (shared_consts.TABLES_ADV_NOTIFICATION.includes(params.table)) { + typedir = shared_consts.TypeNotifs.TYPEDIR_BACHECA; + typeid = (params.table === shared_consts.TABLES_MYGOODS) + ? shared_consts.TypeNotifs.ID_BACHECA_NEW_GOOD + : shared_consts.TypeNotifs.ID_BACHECA_NEW_SERVICE; + setnotif = true; } - // tools.mylog('rec', rec); - }).then(async (myrec) => { - - let setnotif = false; - let typedir = 0; - let typeid = 0; - let groupnameDest = ''; - let circuitnameDest = ''; - - if (isnewrec) { - // New Record created - - if (shared_consts.TABLES_ADV_NOTIFICATION.includes(params.table)) { - typedir = shared_consts.TypeNotifs.TYPEDIR_BACHECA; - typeid = (params.table === shared_consts.TABLES_MYGOODS) - ? shared_consts.TypeNotifs.ID_BACHECA_NEW_GOOD - : shared_consts.TypeNotifs.ID_BACHECA_NEW_SERVICE; - setnotif = true; - } - - if (shared_consts.TABLES_EVENTS_NOTIFICATION.includes(params.table)) { - typedir = shared_consts.TypeNotifs.TYPEDIR_EVENTS; - typeid = shared_consts.TypeNotifs.ID_EVENTS_NEW_REC; - setnotif = true; - } - - if (shared_consts.TABLES_GROUPS_NOTIFICATION.includes(params.table)) { - typedir = shared_consts.TypeNotifs.TYPEDIR_GROUPS; - typeid = shared_consts.TypeNotifs.ID_GROUP_NEW_REC; - groupnameDest = myrec ? myrec.groupname : ''; - setnotif = true; - } - if (shared_consts.TABLES_CIRCUITS_NOTIFICATION.includes(params.table)) { - typedir = shared_consts.TypeNotifs.TYPEDIR_CIRCUITS; - typeid = shared_consts.TypeNotifs.ID_CIRCUIT_NEW_REC; - circuitnameDest = myrec ? myrec.name : ''; - setnotif = (myrec.visibility === 0); // Not send a notification to others if the Circuit is HIDDEN or PRIVATE - } + if (shared_consts.TABLES_EVENTS_NOTIFICATION.includes(params.table)) { + typedir = shared_consts.TypeNotifs.TYPEDIR_EVENTS; + typeid = shared_consts.TypeNotifs.ID_EVENTS_NEW_REC; + setnotif = true; } - if (setnotif) { - await SendNotif.createNewNotification(req, res, {groupnameDest, circuitnameDest}, params.table, myrec, typedir, typeid); + if (shared_consts.TABLES_GROUPS_NOTIFICATION.includes(params.table)) { + typedir = shared_consts.TypeNotifs.TYPEDIR_GROUPS; + typeid = shared_consts.TypeNotifs.ID_GROUP_NEW_REC; + groupnameDest = myrec ? myrec.groupname : ''; + setnotif = true; } - - if (params.table === 'circuits') { - await Circuit.updateData(myrec.idapp, myrec.name); + if (shared_consts.TABLES_CIRCUITS_NOTIFICATION.includes(params.table)) { + typedir = shared_consts.TypeNotifs.TYPEDIR_CIRCUITS; + typeid = shared_consts.TypeNotifs.ID_CIRCUIT_NEW_REC; + circuitnameDest = myrec ? myrec.name : ''; + setnotif = (myrec.visibility === 0); // Not send a notification to others if the Circuit is HIDDEN or PRIVATE } + } - if (params.table === shared_consts.TAB_MYGROUPS && isnewrec) { - // nuovo Record: - // aggiungi il creatore al gruppo stesso - return await User.setGroupsCmd(mydata.idapp, req.user.username, - myrec.groupname, - shared_consts.GROUPSCMD.SETGROUP, true, req.user.username).then((ris) => { - return res.send({rec: myrec, ris}); + if (setnotif) { + await SendNotif.createNewNotification(req, res, { groupnameDest, circuitnameDest }, params.table, myrec, typedir, typeid); + } + + if (params.table === 'circuits') { + await Circuit.updateData(myrec.idapp, myrec.name); + } + + if (params.table === shared_consts.TAB_MYGROUPS && isnewrec) { + // nuovo Record: + // aggiungi il creatore al gruppo stesso + return await User.setGroupsCmd(mydata.idapp, req.user.username, + myrec.groupname, + shared_consts.GROUPSCMD.SETGROUP, true, req.user.username).then((ris) => { + return res.send({ rec: myrec, ris }); }); - } else if (params.table === shared_consts.TAB_MYCIRCUITS && isnewrec) { - // nuovo Record: - // aggiungi il creatore al Circuito stesso - return await User.setCircuitCmd(mydata.idapp, req.user.username, myrec.name, - shared_consts.CIRCUITCMD.SET, true, req.user.username, extrarec).then((ris) => { - return res.send({rec: myrec, ris}); + } else if (params.table === shared_consts.TAB_MYCIRCUITS && isnewrec) { + // nuovo Record: + // aggiungi il creatore al Circuito stesso + return await User.setCircuitCmd(mydata.idapp, req.user.username, myrec.name, + shared_consts.CIRCUITCMD.SET, true, req.user.username, extrarec).then((ris) => { + return res.send({ rec: myrec, ris }); }); - } + } - return res.send({rec: myrec, ris: null}); - }).catch(async (e) => { - console.error('settable', e.message); - if (e.code === 11000) { - const id = mytablerec._id; - delete mytablerec._doc['_id']; - const myfields = mytablerec._doc; - if (!myfields.userId) { - myfields.userId = req.user._id.toString(); - } - return await mytablestrutt.findByIdAndUpdate(id, {$set: myfields}). - then(async (rec) => { - return res.send({rec}); - }). - catch((err) => { - tools.mylog('error: ', err.message); - return res.status(400).send(err); - }); - } else { - console.log(e.message); + return res.send({ rec: myrec, ris: null }); + }).catch(async (e) => { + console.error('settable', e.message); + if (e.code === 11000) { + const id = mytablerec._id; + delete mytablerec._doc['_id']; + const myfields = mytablerec._doc; + if (!myfields.userId) { + myfields.userId = req.user._id.toString(); } - }); + return await mytablestrutt.findByIdAndUpdate(id, { $set: myfields }). + then(async (rec) => { + return res.send({ rec }); + }). + catch((err) => { + tools.mylog('error: ', err.message); + return res.status(400).send(err); + }); + } else { + console.log(e.message); + } + }); } catch (e) { console.error('settable', e.message); @@ -513,14 +529,14 @@ router.post('/setsubrec', authenticate, (req, res) => { if (!myfields.userId) { myfields.userId = req.user._id.toString(); } - return mytablestrutt.findByIdAndUpdate(id, {$set: myfields}). - then(async (rec) => { - return res.send(rec); - }). - catch((err) => { - tools.mylog('error: ', err.message); - return res.status(400).send(err); - }); + return mytablestrutt.findByIdAndUpdate(id, { $set: myfields }). + then(async (rec) => { + return res.send(rec); + }). + catch((err) => { + tools.mylog('error: ', err.message); + return res.status(400).send(err); + }); } else { console.log(e.message); } @@ -549,7 +565,7 @@ router.post('/gettable', authenticate, (req, res) => { }); } catch (e) { console.error(`ERROR gettable ${params.table}: `, e.message, 'params', - params); + params); res.status(500).send(e); } @@ -565,45 +581,45 @@ router.post('/getexp', authenticate, (req, res) => { } if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm) && - !User.isFacilitatore(req.user.perm))) { + !User.isFacilitatore(req.user.perm))) { // If without permissions, exit return res.status(404). - send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); + send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' }); } try { if (params.table === 'exp') { return myUser.find({ - idapp, - $or: [ - {deleted: {$exists: false}}, - {deleted: {$exists: true, $eq: false}}], - }, - { - username: 1, - email: 1, - 'reported': 1, - date_report: 1, - username_who_report: 1, - 'profile.teleg_id': 1, - 'verified_by_aportador': 1, - 'profile.username_telegram': 1, - 'profile.firstname_telegram': 1, - 'profile.lastname_telegram': 1, - }).then(ris => { + idapp, + $or: [ + { deleted: { $exists: false } }, + { deleted: { $exists: true, $eq: false } }], + }, + { + username: 1, + email: 1, + 'reported': 1, + date_report: 1, + username_who_report: 1, + 'profile.teleg_id': 1, + 'verified_by_aportador': 1, + 'profile.username_telegram': 1, + 'profile.firstname_telegram': 1, + 'profile.lastname_telegram': 1, + }).then(ris => { - return res.send(ris); + return res.send(ris); - }).catch((e) => { - console.error('getexp: ' + e.message); - res.status(400).send(e); - }); + }).catch((e) => { + console.error('getexp: ' + e.message); + res.status(400).send(e); + }); } } catch (e) { console.error(`ERROR getexp ${params.table}: `, e.message, 'params', - params); + params); res.status(500).send(e); } @@ -634,8 +650,8 @@ router.post('/getpage', async (req, res) => { const idapp = req.body.idapp; const mypath = params.path; - return await MyPage.findOne({idapp, path: mypath}).then((ris) => { - return res.send({mypage: ris}); + return await MyPage.findOne({ idapp, path: mypath }).then((ris) => { + return res.send({ mypage: ris }); }).catch((e) => { console.log(e.message); res.status(400).send(e); @@ -658,10 +674,10 @@ router.patch('/setlang', authenticate, async (req, res) => { const rec = await User.findByUsername(idapp, username, false); let ris = null; if (!!rec) - ris = await User.findByIdAndUpdate(rec.id, {$set: fieldsvalue}); + ris = await User.findByIdAndUpdate(rec.id, { $set: fieldsvalue }); if (!!ris) { - return res.send({code: server_constants.RIS_CODE_OK, msg: ''}); + return res.send({ code: server_constants.RIS_CODE_OK, msg: '' }); } res.status(400).send(); @@ -684,16 +700,16 @@ router.patch('/chval', authenticate, async (req, res) => { // If I change my record... if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm) && - !User.isEditor(req.user.perm) && !User.isFacilitatore(req.user.perm)) && - (req.user._id.toString() !== id) && - !tools.ModificheConsentite(mydata.table, fieldsvalue)) { + !User.isEditor(req.user.perm) && !User.isFacilitatore(req.user.perm)) && + (req.user._id.toString() !== id) && + !tools.ModificheConsentite(mydata.table, fieldsvalue)) { // If without permissions, exit return res.status(404). - send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); + send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' }); } const camporequisiti = UserCost.FIELDS_REQUISITI.includes( - Object.keys(fieldsvalue)[0]); + Object.keys(fieldsvalue)[0]); let allData = {}; let username = ''; @@ -704,7 +720,7 @@ router.patch('/chval', authenticate, async (req, res) => { username = allData.myuser.username; if (!!allData.myuser) allData.precDataUser = await User.getInfoUser(idapp, - allData.myuser.username); + allData.myuser.username); else allData.precDataUser = null; // allData.useraportador = await ListaIngresso.getUserByInvitante_Username(idapp, allData.myuser.aportador_solidario); @@ -733,8 +749,8 @@ router.patch('/chval', authenticate, async (req, res) => { myrec['_id'] = fieldsvalue['_id']; return await mytable.insertMany(myrec).then((ris) => { if (ris) { - return mytable.deleteMany({_id: myidDel}).then((risdel) => { - return res.send({code: server_constants.RIS_CODE_OK, msg: ''}); + return mytable.deleteMany({ _id: myidDel }).then((risdel) => { + return res.send({ code: server_constants.RIS_CODE_OK, msg: '' }); }); } else { return res.status(404).send(); @@ -756,130 +772,130 @@ router.patch('/chval', authenticate, async (req, res) => { if (mydata.table === shared_consts.TAB_SITES) { if (shared_consts.SITES_KEY_TO_CRYPTED in fieldsvalue) { fieldsvalue[shared_consts.SITES_KEY_TO_CRYPTED] = tools.cryptdata( - fieldsvalue[shared_consts.SITES_KEY_TO_CRYPTED]); + fieldsvalue[shared_consts.SITES_KEY_TO_CRYPTED]); } } - return await mytable.findByIdAndUpdate(id, {$set: fieldsvalue}). - then(async (rec) => { - // tools.mylogshow(' REC TO MODIFY: ', rec); - if (!rec) { - return res.status(404).send(); - } else { - let addmsg = ''; + return await mytable.findByIdAndUpdate(id, { $set: fieldsvalue }). + then(async (rec) => { + // tools.mylogshow(' REC TO MODIFY: ', rec); + if (!rec) { + return res.status(404).send(); + } else { + let addmsg = ''; - if (mydata.notifBot) { - // Send Notification to the BOT + if (mydata.notifBot) { + // Send Notification to the BOT + await telegrambot.sendMsgTelegram(idapp, mydata.notifBot.un, + mydata.notifBot.txt); + if (!!addmsg) await telegrambot.sendMsgTelegram(idapp, mydata.notifBot.un, - mydata.notifBot.txt); - if (!!addmsg) - await telegrambot.sendMsgTelegram(idapp, mydata.notifBot.un, - addmsg); - let addtext = '[Msg Inviato a ' + mydata.notifBot.un + ']:' + - '\n' + - mydata.notifBot.txt; - telegrambot.sendMsgTelegramToTheManagers(idapp, addtext, true); - - if (!!flotta) - tools.writeFlottaLog(idapp, addtext, flotta.riga, - flotta.col_prima); - } - - if (mydata.table === 'accounts') { - if ('saldo' in fieldsvalue) { - msg = 'l\'utente ' + req.user.username + ' ha variato il Saldo di ' + rec.username + ' a ' + fieldsvalue.saldo; - telegrambot.sendMsgTelegramToTheManagers(idapp, msg); - } - } - - - if (mydata.table === 'users') { - if (camporequisiti) { - await User.checkIfSbloccatiRequisiti(idapp, allData, id); - } - - if ('aportador_solidario' in fieldsvalue) { - let ind_order_ingr = mydata.ind_order_ingr; - // SERVE SE CI METTO LE MINUSCOLE/MAIUSCOLE SBAGLIATE in invitante_username! - const myuserfound = await User.findByUsername(idapp, - fieldsvalue.aportador_solidario, false); - if (!!myuserfound) { - if (!!myuserfound._id && !myuserfound.deleted) { - const aportador = await User.getUsernameById(idapp, - myuserfound._id); - fieldsvalue.aportador_solidario = aportador; - //Aggiorna record ! - await mytable.findByIdAndUpdate(id, {$set: fieldsvalue}); - - } - } else { - res.send( - { - code: server_constants.RIS_CODE_ERR, - msg: 'Non aggiornato', - }); - res.status(400).send(); - return false; - } - } else if ('deleted' in fieldsvalue) { - let msg = ''; - if (fieldsvalue.deleted) - msg = 'cancellato (nascosto)'; - else - msg = 'Ripristinato'; - - await telegrambot.sendMsgTelegramToTheManagers(idapp, - `L\'utente ` + tools.getNomeCognomeEUserNameByUser(rec) + - ` è stato ${msg} da ` + - tools.getNomeCognomeEUserNameByUser(req.user)); - } - } - - if (tools.ModificheConsentite(mydata.table, fieldsvalue)) { - let msg = ''; - if (mydata.table === 'users') { - if ('aportador_solidario' in fieldsvalue) { - const nomecognomenuovo = await User.getNameSurnameByUsername( - idapp, - fieldsvalue.aportador_solidario); - const nomecognomeas = await User.getNameSurnameByUsername( - idapp, - rec.aportador_solidario); - msg = `Variato l'invitante di ` + - tools.getNomeCognomeEUserNameByUser(rec) + - '\nmodificato da ' + - tools.getNomeCognomeEUserNameByUser(req.user) + - ' \n' + - 'Prima: ' + nomecognomeas + ' (' + - rec.aportador_solidario + - ')\n' + - 'Dopo: ' + nomecognomenuovo + ' (' + - fieldsvalue.aportador_solidario + ') ]'; - - // Metti l'iniziale - if (!await User.AportadorOrig(id)) { - await mytable.findByIdAndUpdate(id, - {$set: {aportador_iniziale: fieldsvalue.aportador_solidario}}, - {new: false}); - } - } - - } - - if (msg !== '') - telegrambot.sendMsgTelegramToTheManagers(idapp, msg); - } - - res.send({code: server_constants.RIS_CODE_OK, msg: ''}); + addmsg); + let addtext = '[Msg Inviato a ' + mydata.notifBot.un + ']:' + + '\n' + + mydata.notifBot.txt; + telegrambot.sendMsgTelegramToTheManagers(idapp, addtext, true); + if (!!flotta) + tools.writeFlottaLog(idapp, addtext, flotta.riga, + flotta.col_prima); } - }). - catch((e) => { - tools.mylogserr('Error patch USER: ', e.message); - res.status(400).send(); - }); + if (mydata.table === 'accounts') { + if ('saldo' in fieldsvalue) { + msg = 'l\'utente ' + req.user.username + ' ha variato il Saldo di ' + rec.username + ' a ' + fieldsvalue.saldo; + telegrambot.sendMsgTelegramToTheManagers(idapp, msg); + } + } + + + if (mydata.table === 'users') { + if (camporequisiti) { + await User.checkIfSbloccatiRequisiti(idapp, allData, id); + } + + if ('aportador_solidario' in fieldsvalue) { + let ind_order_ingr = mydata.ind_order_ingr; + // SERVE SE CI METTO LE MINUSCOLE/MAIUSCOLE SBAGLIATE in invitante_username! + const myuserfound = await User.findByUsername(idapp, + fieldsvalue.aportador_solidario, false); + if (!!myuserfound) { + if (!!myuserfound._id && !myuserfound.deleted) { + const aportador = await User.getUsernameById(idapp, + myuserfound._id); + fieldsvalue.aportador_solidario = aportador; + //Aggiorna record ! + await mytable.findByIdAndUpdate(id, { $set: fieldsvalue }); + + } + } else { + res.send( + { + code: server_constants.RIS_CODE_ERR, + msg: 'Non aggiornato', + }); + res.status(400).send(); + return false; + } + } else if ('deleted' in fieldsvalue) { + let msg = ''; + if (fieldsvalue.deleted) + msg = 'cancellato (nascosto)'; + else + msg = 'Ripristinato'; + + await telegrambot.sendMsgTelegramToTheManagers(idapp, + `L\'utente ` + tools.getNomeCognomeEUserNameByUser(rec) + + ` è stato ${msg} da ` + + tools.getNomeCognomeEUserNameByUser(req.user)); + } + } + + if (tools.ModificheConsentite(mydata.table, fieldsvalue)) { + let msg = ''; + if (mydata.table === 'users') { + if ('aportador_solidario' in fieldsvalue) { + const nomecognomenuovo = await User.getNameSurnameByUsername( + idapp, + fieldsvalue.aportador_solidario); + const nomecognomeas = await User.getNameSurnameByUsername( + idapp, + rec.aportador_solidario); + msg = `Variato l'invitante di ` + + tools.getNomeCognomeEUserNameByUser(rec) + + '\nmodificato da ' + + tools.getNomeCognomeEUserNameByUser(req.user) + + ' \n' + + 'Prima: ' + nomecognomeas + ' (' + + rec.aportador_solidario + + ')\n' + + 'Dopo: ' + nomecognomenuovo + ' (' + + fieldsvalue.aportador_solidario + ') ]'; + + // Metti l'iniziale + if (!await User.AportadorOrig(id)) { + await mytable.findByIdAndUpdate(id, + { $set: { aportador_iniziale: fieldsvalue.aportador_solidario } }, + { new: false }); + } + } + + } + + if (msg !== '') + telegrambot.sendMsgTelegramToTheManagers(idapp, msg); + } + + res.send({ code: server_constants.RIS_CODE_OK, msg: '' }); + + } + + }). + catch((e) => { + tools.mylogserr('Error patch USER: ', e.message); + res.status(400).send(); + }); } catch (e) { tools.mylogserr('Error chval: ', e.message); res.status(400).send(); @@ -899,10 +915,10 @@ router.patch('/askfunz', authenticate, async (req, res) => { if (!entra) { // If I change my record... if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm) && - !User.isFacilitatore(req.user.perm)) && (req.user._id.toString() !== id)) { + !User.isFacilitatore(req.user.perm)) && (req.user._id.toString() !== id)) { // If without permissions, exit return res.status(404). - send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); + send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' }); } } @@ -910,7 +926,7 @@ router.patch('/askfunz', authenticate, async (req, res) => { const userfree = await Graduatoria.getFirstUserGradFree(idapp); if (!!userfree) - return res.send({code: server_constants.RIS_CODE_OK, out: userfree}); + return res.send({ code: server_constants.RIS_CODE_OK, out: userfree }); /*} else if (mydata.myfunc === shared_consts.CallFunz.GET_VALBYTABLE) { const mytable = globalTables.getTableByTableName(mydata.table); const coltoshow = { @@ -932,7 +948,7 @@ router.patch('/askfunz', authenticate, async (req, res) => { return res.send({ code: server_constants.RIS_CODE_OK });*/ } - return res.send({code: server_constants.RIS_CODE_ERR}); + return res.send({ code: server_constants.RIS_CODE_ERR }); }); @@ -949,20 +965,20 @@ router.patch('/callfunz', authenticate, async (req, res) => { try { let entra = false; if (mydata.myfunc === shared_consts.CallFunz.AGGIUNGI_NUOVO_IMBARCO || - mydata.myfunc === shared_consts.CallFunz.CANCELLA_IMBARCO) { + mydata.myfunc === shared_consts.CallFunz.CANCELLA_IMBARCO) { entra = true; } if (!entra) { // If I change my record... if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm) && - !User.isFacilitatore(req.user.perm)) && (req.user._id.toString() !== id)) { + !User.isFacilitatore(req.user.perm)) && (req.user._id.toString() !== id)) { // If without permissions, exit return res.status(404). - send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); + send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' }); } } - let myuser = await User.findOne({idapp, username}); + let myuser = await User.findOne({ idapp, username }); let fieldsvalue = {}; @@ -970,20 +986,20 @@ router.patch('/callfunz', authenticate, async (req, res) => { if (!!myuser.username) { let FormDaMostrare = telegrambot.getFormDaMostrare(idapp, mydata.myfunc, - myuser); + myuser); await telegrambot.sendMsgTelegramToTheManagers(idapp, - `L\'utente ${myuser.name} ${myuser.surname} (${myuser.username}) ha detto di aver già visto lo Zoom di Benvenuto`, - false, FormDaMostrare); + `L\'utente ${myuser.name} ${myuser.surname} (${myuser.username}) ha detto di aver già visto lo Zoom di Benvenuto`, + false, FormDaMostrare); const ris = await User.findByIdAndUpdate(myuser.id, - {$set: {'profile.ask_zoom_partecipato': true}}); + { $set: { 'profile.ask_zoom_partecipato': true } }); if (ris) - return res.send({code: server_constants.RIS_CODE_OK, msg: ''}); + return res.send({ code: server_constants.RIS_CODE_OK, msg: '' }); } } - return res.send({code: server_constants.RIS_CODE_ERR}); + return res.send({ code: server_constants.RIS_CODE_ERR }); } catch (e) { console.log(e.message); @@ -1031,14 +1047,14 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => { const mytable = globalTables.getTableByTableName(tablename); - const fields = {'ALL': 1}; + const fields = { 'ALL': 1 }; if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) && - (tablename !== 'extralist') && - !tools.ModificheConsentite(tablename, fields, id, req.user)) { + (tablename !== 'extralist') && + !tools.ModificheConsentite(tablename, fields, id, req.user)) { // If without permissions, exit return res.status(404). - send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); + send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' }); } let cancellato = false; @@ -1054,7 +1070,7 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => { date_deleted: new Date(), }; - await mytable.findByIdAndUpdate(id, {$set: fieldsvalue}); + await mytable.findByIdAndUpdate(id, { $set: fieldsvalue }); cancellato = true; } @@ -1096,11 +1112,11 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => { // Do extra things after deleted //let ris2 = await actions.doOtherlasThingsAfterDeleted(tablename, myrec, notifBot, req); if (!!ris) { - return res.send({code: server_constants.RIS_CODE_OK, msg: ''}); + return res.send({ code: server_constants.RIS_CODE_OK, msg: '' }); } } - res.send({code: server_constants.RIS_CODE_ERR, msg: ''}); + res.send({ code: server_constants.RIS_CODE_ERR, msg: '' }); return ris; }); @@ -1116,13 +1132,13 @@ router.post('/duprec/:table/:id', authenticate, async (req, res) => { if (!req.user) { return res.status(404). - send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); + send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' }); } if (!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) { // If without permissions, exit return res.status(404). - send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); + send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' }); } return await mytable.findById(id).then(async (mydata) => { @@ -1139,15 +1155,15 @@ router.post('/duprec/:table/:id', authenticate, async (req, res) => { // Do extra things after deleted return await actions.doOtherThingsAfterDuplicated(tablename, rec). - then(({myrec}) => { - // ... - mytable.findById(myrec._id).then((record) => { - return res.send( - {code: server_constants.RIS_CODE_OK, record, msg: ''}); - }); - + then(({ myrec }) => { + // ... + mytable.findById(myrec._id).then((record) => { + return res.send( + { code: server_constants.RIS_CODE_OK, record, msg: '' }); }); + }); + }).catch((e) => { console.error(e.message); res.status(400).send(); @@ -1161,14 +1177,14 @@ router.get('/loadsite/:userId/:idapp', authenticate_noerror, (req, res) => { }); router.get('/loadsite/:userId/:idapp/:vers', authenticate_noerror, - (req, res) => { - let versionstr = req.params.vers; + (req, res) => { + let versionstr = req.params.vers; - let version = tools.getVersionint(versionstr); + let version = tools.getVersionint(versionstr); - load(req, res, version); + load(req, res, version); - }); + }); function load(req, res, version) { const userId = req.params.userId; @@ -1181,8 +1197,8 @@ function load(req, res, version) { let gestoredelSito = '0'; if (!!req.user) { gestoredelSito = (User.isAdmin(req.user.perm) || - User.isManager(req.user.perm) || - User.isEditor(req.user.perm)) ? '1' : '0'; + User.isManager(req.user.perm) || + User.isEditor(req.user.perm)) ? '1' : '0'; } // var category = req.params.category; @@ -1200,7 +1216,7 @@ function load(req, res, version) { if (userId !== '0') { // LOGGED WITH USERID bookedevent = Booking.findAllByUserIdAndIdApp(userId, idapp, - gestoredelSito); + gestoredelSito); } // Extract all the todos of the userId only @@ -1331,7 +1347,7 @@ function load(req, res, version) { myuser.password = ''; myuser.calcstat = arrdata[13]; } - } catch (e) {} + } catch (e) { } } if (version < 91) { res.send({ @@ -1422,7 +1438,7 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, async (req, res) => { return res.status(404).send(); } - await CfgServer.find({idapp}).then((arrcfgrec) => { + await CfgServer.find({ idapp }).then((arrcfgrec) => { if (!arrcfgrec) return res.status(404).send(); @@ -1440,7 +1456,7 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, async (req, res) => { if (req.user) { // If User is Admin, then send user Lists if (User.isAdmin(req.user.perm) || User.isEditor(req.user.perm) || - User.isManager(req.user.perm)) { + User.isManager(req.user.perm)) { // Send UsersList usersList = User.getUsersList(idapp); @@ -1460,7 +1476,7 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, async (req, res) => { }).catch((e) => { console.log(e.message); - res.status(400).send({code: server_constants.RIS_CODE_ERR, msg: e}); + res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: e }); }); }); @@ -1552,17 +1568,17 @@ function uploadFile(req, res, version) { form.uploadDir = mydir2; try { - form.on('fileBegin', async function(name, file) { + form.on('fileBegin', async function (name, file) { const mydir = folder + '/' + file.newFilename; // tools.mkdirpath(mydir); file.path = mydir }); - form.on('file', async function(name, file) { + form.on('file', async function (name, file) { try { console.log('1) Uploading ' + file.originalFilename); const mydir = tools.getdirByIdApp(idapp) + dirmain + - server_constants.DIR_UPLOAD + '/' + dir; + server_constants.DIR_UPLOAD + '/' + dir; // console.log('mydir', mydir); @@ -1582,10 +1598,10 @@ function uploadFile(req, res, version) { oldpath = file.newFilename; - let fromfile = '.'+server_constants.DIR_UPLOAD + '/' + dir + '/' + oldpath; - let tofile = '.'+server_constants.DIR_UPLOAD + '/' + dir + '/' +file.originalFilename; + let fromfile = '.' + server_constants.DIR_UPLOAD + '/' + dir + '/' + oldpath; + let tofile = '.' + server_constants.DIR_UPLOAD + '/' + dir + '/' + file.originalFilename; let mydircurrent = process.cwd() + '/src/server/router/upload/' + dir; - fromfile = mydircurrent + '/' + oldpath; + fromfile = mydircurrent + '/' + oldpath; tofile = mydir + '/' + file.originalFilename; let newname = tofile; file.path = newname; @@ -1593,10 +1609,10 @@ function uploadFile(req, res, version) { // console.log('tofile', tofile); if (!tools.sulServer()) { - res.end(); - return; + res.end(); + return; } - + // Move in the folder application ! tools.move(fromfile, tofile, (err) => { @@ -1608,47 +1624,47 @@ function uploadFile(req, res, version) { // Salva le immagini in formato compresso try { let resized_img_small = tools.extractFilePath(newname) + '/' + - server_constants.PREFIX_IMG_SMALL + - tools.extractFileName(newname); + server_constants.PREFIX_IMG_SMALL + + tools.extractFileName(newname); // SMALL // questa opzione 'failOnError' serve per risolvere l'errore (Error: VipsJpeg: Invalid SOS parameters for sequential JPEG - sharp(newname, {failOnError: false}). - resize(64, 64). - withMetadata(). - toFile(resized_img_small); + sharp(newname, { failOnError: false }). + resize(64, 64). + withMetadata(). + toFile(resized_img_small); // MEDIUM let resized_img = tools.extractFilePath(newname) + '/' + server_constants.PREFIX_IMG + tools.extractFileName(newname); - sharp(newname, {failOnError: false}). - resize({ - width: 512, - // height: 512, - //fit: sharp.fit.cover, - fit: sharp.fit.contain, - // position: sharp.strategy.entropy, - }).withMetadata().toFile(resized_img, function(err) { + sharp(newname, { failOnError: false }). + resize({ + width: 512, + // height: 512, + //fit: sharp.fit.cover, + fit: sharp.fit.contain, + // position: sharp.strategy.entropy, + }).withMetadata().toFile(resized_img, function (err) { - // console.log('3) Ridimensionata Immagine ' + newname, 'in', resized_img); + // console.log('3) Ridimensionata Immagine ' + newname, 'in', resized_img); - if (tools.isFileExists(resized_img)) { - // console.log('4) Cancella l \'immagine grande originale:', newname); - // DELETE THE ORIGINAL BIG - tools.delete(newname, false, () => {}); + if (tools.isFileExists(resized_img)) { + // console.log('4) Cancella l \'immagine grande originale:', newname); + // DELETE THE ORIGINAL BIG + tools.delete(newname, false, () => { }); - // console.log('5) Rinomina l\'immagine Media da', resized_img, 'a:', newname); - // RENAME THE MEDIUM IN THE ORIGINAL NAME - tools.move(resized_img, newname, (err) => { - if (err) - console.error('err', err); - else - console.log('move', newname); - }); - } + // console.log('5) Rinomina l\'immagine Media da', resized_img, 'a:', newname); + // RENAME THE MEDIUM IN THE ORIGINAL NAME + tools.move(resized_img, newname, (err) => { + if (err) + console.error('err', err); + else + console.log('move', newname); + }); + } - if (err) - console.error('Error Upload: ', err); - }); + if (err) + console.error('Error Upload: ', err); + }); } catch (e) { console.error('Error Upload(2) ', e); } @@ -1666,7 +1682,7 @@ function uploadFile(req, res, version) { } }); - form.on('end', function() { + form.on('end', function () { console.log('-> upload done'); }); @@ -1730,12 +1746,12 @@ function deleteFile(req, res, version) { console.log('Delete file ' + relativefile); // ++ Move in the folder application ! let fullpathfile = tools.getdirByIdApp(idapp) + dirmain + '/' + - relativefile; + relativefile; tools.delete(fullpathfile, true, (err) => { if (err) console.log('err', err); if (err === undefined || err.errno === -2) - res.send({code: server_constants.RIS_CODE_OK, msg: ''}); + res.send({ code: server_constants.RIS_CODE_OK, msg: '' }); }); } catch (e) { diff --git a/src/server/router/site_router.js b/src/server/router/site_router.js index 7b44dc9..923501b 100755 --- a/src/server/router/site_router.js +++ b/src/server/router/site_router.js @@ -48,6 +48,7 @@ router.post('/load', async (req, res) => { reg_weekly: await User.calcRegWeekly(idapp), lastsreg: await User.getLastUsers(idapp), lastsonline: await User.getLastOnlineUsers(idapp), + diffusorilist: await User.getDiffusoriUsers(idapp), checkuser: await User.checkUser(idapp, username), // navi_partite: await Nave.getNaviPartite(idapp), // navi_in_partenza: await Nave.getNaviInPartenza(idapp), diff --git a/src/server/sendemail.js b/src/server/sendemail.js index 543c12a..e571a30 100755 --- a/src/server/sendemail.js +++ b/src/server/sendemail.js @@ -278,7 +278,7 @@ module.exports = { } }, - sendEmail_RequestNewPassword: async function(lang, user, emailto, idapp, tokenforgot) { + sendEmail_RequestNewPassword: async function(lang, user, emailto, idapp, tokenforgot, tokenforgot_code) { let mylocalsconf = { idapp, @@ -286,6 +286,7 @@ module.exports = { locale: lang, nomeapp: tools.getNomeAppByIdApp(idapp), strlinksetpassword: tools.getlinkRequestNewPassword(idapp, emailto, tokenforgot), + tokenforgot_code, emailto: emailto, };