++ diffusori

fixed user chip
This commit is contained in:
Surya Paolo
2022-12-11 02:57:35 +01:00
parent 234fd8b00d
commit 3eef70f3f3
5 changed files with 663 additions and 420 deletions

100
mongodb/Diffusori.mongodb Normal file
View File

@@ -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);

View File

@@ -136,6 +136,9 @@ const UserSchema = new mongoose.Schema({
tokenforgot: { tokenforgot: {
type: String, type: String,
}, },
tokenforgot_code: {
type: String,
},
date_tokenreg: { date_tokenreg: {
type: Date, 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) { UserSchema.statics.createNewRequestPwd = function (idapp, email) {
const User = this; const User = this;
@@ -1177,9 +1191,10 @@ UserSchema.statics.createNewRequestPwd = function (idapp, email) {
user.tokenforgot = jwt.sign(user._id.toHexString(), process.env.SIGNCODE). user.tokenforgot = jwt.sign(user._id.toHexString(), process.env.SIGNCODE).
toString(); toString();
user.date_tokenforgot = new Date(); user.date_tokenforgot = new Date();
user.tokenforgot_code = 100000 + Math.round(Math.random() * 899999);
user.lasttimeonline = new Date(); user.lasttimeonline = new Date();
return await user.save().then(async () => { 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; return true;
}); });
@@ -1202,10 +1217,12 @@ UserSchema.statics.createNewRequestPwdByUsernameAndGetLink = async function (ida
user.tokenforgot = jwt.sign(user._id.toHexString(), process.env.SIGNCODE). user.tokenforgot = jwt.sign(user._id.toHexString(), process.env.SIGNCODE).
toString(); toString();
user.date_tokenforgot = new Date(); user.date_tokenforgot = new Date();
user.tokenforgot_code = 100000 + Math.round(Math.random() * 899999);
user.lasttimeonline = new Date(); user.lasttimeonline = new Date();
user.code_pwd_reset = 0;
return await user.save().then(() => { 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) { UserSchema.statics.checkUser = async function (idapp, username) {
const User = this; const User = this;
@@ -3580,6 +3609,7 @@ UserSchema.statics.findAllDistinctNationality = async function (idapp) {
}); });
}; };
UserSchema.statics.getUsersRegDaily = function (idapp, nrec) { UserSchema.statics.getUsersRegDaily = function (idapp, nrec) {
const query = [ const query = [
@@ -3611,6 +3641,101 @@ UserSchema.statics.getUsersRegDaily = function (idapp, nrec) {
return query; 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) { UserSchema.statics.getUsersRegWeekly = function (idapp, nrec) {
const query = [ const query = [

View File

@@ -7,15 +7,15 @@ const telegrambot = require('../telegram/telegrambot');
const sharp = require('sharp'); const sharp = require('sharp');
const {authenticate, authenticate_noerror} = require( const { authenticate, authenticate_noerror } = require(
'../middleware/authenticate'); '../middleware/authenticate');
const {ObjectID} = require('mongodb'); const { ObjectID } = require('mongodb');
// const {ListaIngresso} = require('../models/listaingresso'); // const {ListaIngresso} = require('../models/listaingresso');
const {Graduatoria} = require('../models/graduatoria'); const { Graduatoria } = require('../models/graduatoria');
const mongoose = require('mongoose').set('debug', false); 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 // const uuidv4 = require('uuid/v4'); // I chose v4 you can select others
@@ -29,36 +29,36 @@ if (!fs.existsSync(folder)) {
const _ = require('lodash'); const _ = require('lodash');
const {User} = require('../models/user'); const { User } = require('../models/user');
const {MyGroup} = require('../models/mygroup'); const { MyGroup } = require('../models/mygroup');
const {Circuit} = require('../models/circuit'); const { Circuit } = require('../models/circuit');
const {Booking} = require('../models/booking'); const { Booking } = require('../models/booking');
const {Operator} = require('../models/operator'); const { Operator } = require('../models/operator');
const {Where} = require('../models/where'); const { Where } = require('../models/where');
const {MyEvent} = require('../models/myevent'); const { MyEvent } = require('../models/myevent');
const {Contribtype} = require('../models/contribtype'); const { Contribtype } = require('../models/contribtype');
const {PaymentType} = require('../models/paymenttype'); const { PaymentType } = require('../models/paymenttype');
const {Discipline} = require('../models/discipline'); const { Discipline } = require('../models/discipline');
const {MyElem} = require('../models/myelem'); const { MyElem } = require('../models/myelem');
const {Skill} = require('../models/skill'); const { Skill } = require('../models/skill');
const {Good} = require('../models/good'); const { Good } = require('../models/good');
const {StatusSkill} = require('../models/statusSkill'); const { StatusSkill } = require('../models/statusSkill');
const {Province} = require('../models/province'); const { Province } = require('../models/province');
const {Sector} = require('../models/sector'); const { Sector } = require('../models/sector');
const {SectorGood} = require('../models/sectorgood'); const { SectorGood } = require('../models/sectorgood');
const {CatGrp} = require('../models/catgrp'); const { CatGrp } = require('../models/catgrp');
const Site = require('../models/site'); const Site = require('../models/site');
const {Level} = require('../models/level'); const { Level } = require('../models/level');
const {AdType} = require('../models/adtype'); const { AdType } = require('../models/adtype');
const {AdTypeGood} = require('../models/adtypegood'); const { AdTypeGood } = require('../models/adtypegood');
const {Newstosent} = require('../models/newstosent'); const { Newstosent } = require('../models/newstosent');
const {MyPage} = require('../models/mypage'); const { MyPage } = require('../models/mypage');
const {CalZoom} = require('../models/calzoom'); const { CalZoom } = require('../models/calzoom');
const {Gallery} = require('../models/gallery'); const { Gallery } = require('../models/gallery');
const {Settings} = require('../models/settings'); const { Settings } = require('../models/settings');
const {SendMsg} = require('../models/sendmsg'); const { SendMsg } = require('../models/sendmsg');
const {SendNotif} = require('../models/sendnotif'); const { SendNotif } = require('../models/sendnotif');
const {Permission} = require('../models/permission'); const { Permission } = require('../models/permission');
const Producer = require('../models/producer'); const Producer = require('../models/producer');
const Cart = require('../models/cart'); const Cart = require('../models/cart');
const OrdersCart = require('../models/orderscart'); const OrdersCart = require('../models/orderscart');
@@ -145,37 +145,57 @@ router.post(process.env.LINK_REQUEST_NEWPASSWORD, async (req, res) => {
try { try {
const ris = await User.createNewRequestPwd(idapp, email); const ris = await User.createNewRequestPwd(idapp, email);
if (ris) { if (ris) {
res.send({code: server_constants.RIS_CODE_OK, msg: ''}); res.send({ code: server_constants.RIS_CODE_OK, msg: '' });
} else { } else {
tools.snooze(5000); tools.snooze(5000);
return res.status(200). 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) { } catch (e) {
console.log(process.env.LINK_REQUEST_NEWPASSWORD, e.message); console.log(process.env.LINK_REQUEST_NEWPASSWORD, e.message);
res.status(400).send(); 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! // Invio la Nuova Password richiesta dal reset!
// Ritorna il token per poter effettuare le chiamate... // Ritorna il token per poter effettuare le chiamate...
router.post(process.env.LINK_UPDATE_PWD, (req, res) => { router.post(process.env.LINK_UPDATE_PWD, async (req, res) => {
const body = _.pick(req.body, ['idapp', 'email', 'tokenforgot', 'password']); const body = _.pick(req.body, ['idapp', 'email', 'tokenforgot', 'tokenforgot_code', 'password']);
const idapp = body.idapp; const idapp = body.idapp;
const email = body.email.toLowerCase().trim(); const email = body.email.toLowerCase().trim();
const tokenforgot = body.tokenforgot; const tokenforgot = body.tokenforgot;
const tokenforgot_code = body.tokenforgot_code;
const password = body.password; const password = body.password;
const msg = 'Richiesta Nuova Password: idapp= ' + idapp + ' email = ' + email; const msg = 'Richiesta Nuova Password: idapp= ' + idapp + ' email = ' + email;
console.log(msg); console.log(msg);
// telegrambot.sendMsgTelegramToTheManagers(body.idapp, msg); // telegrambot.sendMsgTelegramToTheManagers(body.idapp, msg);
User.findByLinkTokenforgot(idapp, email, tokenforgot).then((user) => { let user = null;
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();
});
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();
});
}
if (!user) { if (!user) {
return res.send( return res.send(
{code: server_constants.RIS_CODE_TOKEN_RESETPASSWORD_NOT_FOUND}); { code: server_constants.RIS_CODE_TOKEN_RESETPASSWORD_NOT_FOUND });
} else { } else {
// aggiorna la nuova password // aggiorna la nuova password
user.password = password; user.password = password;
@@ -184,26 +204,22 @@ router.post(process.env.LINK_UPDATE_PWD, (req, res) => {
// Crea token // Crea token
user.generateAuthToken(req).then(token => { user.generateAuthToken(req).then(token => {
user.tokenforgot = ''; // Svuota il tokenforgot perché non ti servirà più... user.tokenforgot = ''; // Svuota il tokenforgot perché non ti servirà più...
user.tokenforgot_code = ''; // Svuota il tokenforgot perché non ti servirà più...
// Salva lo User // Salva lo User
user.save().then(() => { user.save().then(() => {
res.header('x-auth', token). res.header('x-auth', token).
send({code: server_constants.RIS_CODE_OK}); // Ritorna il token di ritorno send({ code: server_constants.RIS_CODE_OK }); // Ritorna il token di ritorno
}); });
}); });
} }
}).catch((e) => {
console.log(process.env.LINK_UPDATE_PWD, e.message);
res.status(400).send();
});
}); });
router.post('/testServer', authenticate_noerror, async (req, res) => { router.post('/testServer', authenticate_noerror, async (req, res) => {
try { try {
const test = req.body.test; const test = req.body.test;
let ris = {test}; let ris = { test };
if (req.user) { if (req.user) {
await tools.sendNotificationToUser(req.user._id, 'Test Server', await tools.sendNotificationToUser(req.user._id, 'Test Server',
@@ -223,7 +239,7 @@ router.get('/test1', authenticate_noerror, async (req, res) => {
try { try {
const test = req.query.test; const test = req.query.test;
let ris = {test}; let ris = { test };
if (req.user) { if (req.user) {
await tools.sendNotificationToUser(req.user._id, 'Test Server', await tools.sendNotificationToUser(req.user._id, 'Test Server',
@@ -249,7 +265,7 @@ router.post('/settable', authenticate, async (req, res) => {
delete mydata['extrarec']; delete mydata['extrarec'];
} }
const fieldsvalue = {'ALL': 1}; const fieldsvalue = { 'ALL': 1 };
mydata.idapp = req.user.idapp; mydata.idapp = req.user.idapp;
const idapp = mydata.idapp; const idapp = mydata.idapp;
@@ -267,7 +283,7 @@ router.post('/settable', authenticate, async (req, res) => {
!tools.ModificheConsentite(params.table, fieldsvalue)) { !tools.ModificheConsentite(params.table, fieldsvalue)) {
// If without permissions, exit // If without permissions, exit
return res.status(404). 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)) { if (shared_consts.TABLES_USER_ID.includes(params.table)) {
@@ -309,7 +325,7 @@ router.post('/settable', authenticate, async (req, res) => {
(rec) => (rec.username === req.user.username)); (rec) => (rec.username === req.user.username));
if (indfind < 0) { if (indfind < 0) {
mydata.admins.push({username: req.user.username}); mydata.admins.push({ username: req.user.username });
} }
} }
} }
@@ -341,23 +357,23 @@ router.post('/settable', authenticate, async (req, res) => {
if (params.table === shared_consts.TAB_MYGROUPS && isnewrec) { if (params.table === shared_consts.TAB_MYGROUPS && isnewrec) {
// Controlla se esiste già con lo stesso nome // 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) { 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) { 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) { } else if (params.table === shared_consts.TAB_MYCIRCUITS && isnewrec) {
// Controlla se esiste già con lo stesso nome // 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) { 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) { 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}); /*alreadyexist = await Circuit.findOne({idapp, symbol: mydata.symbol});
if (alreadyexist) { if (alreadyexist) {
@@ -423,7 +439,7 @@ router.post('/settable', authenticate, async (req, res) => {
} }
if (setnotif) { if (setnotif) {
await SendNotif.createNewNotification(req, res, {groupnameDest, circuitnameDest}, params.table, myrec, typedir, typeid); await SendNotif.createNewNotification(req, res, { groupnameDest, circuitnameDest }, params.table, myrec, typedir, typeid);
} }
if (params.table === 'circuits') { if (params.table === 'circuits') {
@@ -436,18 +452,18 @@ router.post('/settable', authenticate, async (req, res) => {
return await User.setGroupsCmd(mydata.idapp, req.user.username, return await User.setGroupsCmd(mydata.idapp, req.user.username,
myrec.groupname, myrec.groupname,
shared_consts.GROUPSCMD.SETGROUP, true, req.user.username).then((ris) => { shared_consts.GROUPSCMD.SETGROUP, true, req.user.username).then((ris) => {
return res.send({rec: myrec, ris}); return res.send({ rec: myrec, ris });
}); });
} else if (params.table === shared_consts.TAB_MYCIRCUITS && isnewrec) { } else if (params.table === shared_consts.TAB_MYCIRCUITS && isnewrec) {
// nuovo Record: // nuovo Record:
// aggiungi il creatore al Circuito stesso // aggiungi il creatore al Circuito stesso
return await User.setCircuitCmd(mydata.idapp, req.user.username, myrec.name, return await User.setCircuitCmd(mydata.idapp, req.user.username, myrec.name,
shared_consts.CIRCUITCMD.SET, true, req.user.username, extrarec).then((ris) => { shared_consts.CIRCUITCMD.SET, true, req.user.username, extrarec).then((ris) => {
return res.send({rec: myrec, ris}); return res.send({ rec: myrec, ris });
}); });
} }
return res.send({rec: myrec, ris: null}); return res.send({ rec: myrec, ris: null });
}).catch(async (e) => { }).catch(async (e) => {
console.error('settable', e.message); console.error('settable', e.message);
if (e.code === 11000) { if (e.code === 11000) {
@@ -457,9 +473,9 @@ router.post('/settable', authenticate, async (req, res) => {
if (!myfields.userId) { if (!myfields.userId) {
myfields.userId = req.user._id.toString(); myfields.userId = req.user._id.toString();
} }
return await mytablestrutt.findByIdAndUpdate(id, {$set: myfields}). return await mytablestrutt.findByIdAndUpdate(id, { $set: myfields }).
then(async (rec) => { then(async (rec) => {
return res.send({rec}); return res.send({ rec });
}). }).
catch((err) => { catch((err) => {
tools.mylog('error: ', err.message); tools.mylog('error: ', err.message);
@@ -513,7 +529,7 @@ router.post('/setsubrec', authenticate, (req, res) => {
if (!myfields.userId) { if (!myfields.userId) {
myfields.userId = req.user._id.toString(); myfields.userId = req.user._id.toString();
} }
return mytablestrutt.findByIdAndUpdate(id, {$set: myfields}). return mytablestrutt.findByIdAndUpdate(id, { $set: myfields }).
then(async (rec) => { then(async (rec) => {
return res.send(rec); return res.send(rec);
}). }).
@@ -568,7 +584,7 @@ router.post('/getexp', authenticate, (req, res) => {
!User.isFacilitatore(req.user.perm))) { !User.isFacilitatore(req.user.perm))) {
// If without permissions, exit // If without permissions, exit
return res.status(404). return res.status(404).
send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
} }
try { try {
@@ -577,8 +593,8 @@ router.post('/getexp', authenticate, (req, res) => {
return myUser.find({ return myUser.find({
idapp, idapp,
$or: [ $or: [
{deleted: {$exists: false}}, { deleted: { $exists: false } },
{deleted: {$exists: true, $eq: false}}], { deleted: { $exists: true, $eq: false } }],
}, },
{ {
username: 1, username: 1,
@@ -634,8 +650,8 @@ router.post('/getpage', async (req, res) => {
const idapp = req.body.idapp; const idapp = req.body.idapp;
const mypath = params.path; const mypath = params.path;
return await MyPage.findOne({idapp, path: mypath}).then((ris) => { return await MyPage.findOne({ idapp, path: mypath }).then((ris) => {
return res.send({mypage: ris}); return res.send({ mypage: ris });
}).catch((e) => { }).catch((e) => {
console.log(e.message); console.log(e.message);
res.status(400).send(e); res.status(400).send(e);
@@ -658,10 +674,10 @@ router.patch('/setlang', authenticate, async (req, res) => {
const rec = await User.findByUsername(idapp, username, false); const rec = await User.findByUsername(idapp, username, false);
let ris = null; let ris = null;
if (!!rec) if (!!rec)
ris = await User.findByIdAndUpdate(rec.id, {$set: fieldsvalue}); ris = await User.findByIdAndUpdate(rec.id, { $set: fieldsvalue });
if (!!ris) { 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(); res.status(400).send();
@@ -689,7 +705,7 @@ router.patch('/chval', authenticate, async (req, res) => {
!tools.ModificheConsentite(mydata.table, fieldsvalue)) { !tools.ModificheConsentite(mydata.table, fieldsvalue)) {
// If without permissions, exit // If without permissions, exit
return res.status(404). 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( const camporequisiti = UserCost.FIELDS_REQUISITI.includes(
@@ -733,8 +749,8 @@ router.patch('/chval', authenticate, async (req, res) => {
myrec['_id'] = fieldsvalue['_id']; myrec['_id'] = fieldsvalue['_id'];
return await mytable.insertMany(myrec).then((ris) => { return await mytable.insertMany(myrec).then((ris) => {
if (ris) { if (ris) {
return mytable.deleteMany({_id: myidDel}).then((risdel) => { return mytable.deleteMany({ _id: myidDel }).then((risdel) => {
return res.send({code: server_constants.RIS_CODE_OK, msg: ''}); return res.send({ code: server_constants.RIS_CODE_OK, msg: '' });
}); });
} else { } else {
return res.status(404).send(); return res.status(404).send();
@@ -761,7 +777,7 @@ router.patch('/chval', authenticate, async (req, res) => {
} }
return await mytable.findByIdAndUpdate(id, {$set: fieldsvalue}). return await mytable.findByIdAndUpdate(id, { $set: fieldsvalue }).
then(async (rec) => { then(async (rec) => {
// tools.mylogshow(' REC TO MODIFY: ', rec); // tools.mylogshow(' REC TO MODIFY: ', rec);
if (!rec) { if (!rec) {
@@ -810,7 +826,7 @@ router.patch('/chval', authenticate, async (req, res) => {
myuserfound._id); myuserfound._id);
fieldsvalue.aportador_solidario = aportador; fieldsvalue.aportador_solidario = aportador;
//Aggiorna record ! //Aggiorna record !
await mytable.findByIdAndUpdate(id, {$set: fieldsvalue}); await mytable.findByIdAndUpdate(id, { $set: fieldsvalue });
} }
} else { } else {
@@ -860,8 +876,8 @@ router.patch('/chval', authenticate, async (req, res) => {
// Metti l'iniziale // Metti l'iniziale
if (!await User.AportadorOrig(id)) { if (!await User.AportadorOrig(id)) {
await mytable.findByIdAndUpdate(id, await mytable.findByIdAndUpdate(id,
{$set: {aportador_iniziale: fieldsvalue.aportador_solidario}}, { $set: { aportador_iniziale: fieldsvalue.aportador_solidario } },
{new: false}); { new: false });
} }
} }
@@ -871,7 +887,7 @@ router.patch('/chval', authenticate, async (req, res) => {
telegrambot.sendMsgTelegramToTheManagers(idapp, msg); telegrambot.sendMsgTelegramToTheManagers(idapp, msg);
} }
res.send({code: server_constants.RIS_CODE_OK, msg: ''}); res.send({ code: server_constants.RIS_CODE_OK, msg: '' });
} }
@@ -902,7 +918,7 @@ router.patch('/askfunz', authenticate, async (req, res) => {
!User.isFacilitatore(req.user.perm)) && (req.user._id.toString() !== id)) { !User.isFacilitatore(req.user.perm)) && (req.user._id.toString() !== id)) {
// If without permissions, exit // If without permissions, exit
return res.status(404). 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); const userfree = await Graduatoria.getFirstUserGradFree(idapp);
if (!!userfree) 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) { /*} else if (mydata.myfunc === shared_consts.CallFunz.GET_VALBYTABLE) {
const mytable = globalTables.getTableByTableName(mydata.table); const mytable = globalTables.getTableByTableName(mydata.table);
const coltoshow = { 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_OK });*/
} }
return res.send({code: server_constants.RIS_CODE_ERR}); return res.send({ code: server_constants.RIS_CODE_ERR });
}); });
@@ -958,11 +974,11 @@ router.patch('/callfunz', authenticate, async (req, res) => {
!User.isFacilitatore(req.user.perm)) && (req.user._id.toString() !== id)) { !User.isFacilitatore(req.user.perm)) && (req.user._id.toString() !== id)) {
// If without permissions, exit // If without permissions, exit
return res.status(404). 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 = {}; let fieldsvalue = {};
@@ -977,13 +993,13 @@ router.patch('/callfunz', authenticate, async (req, res) => {
false, FormDaMostrare); false, FormDaMostrare);
const ris = await User.findByIdAndUpdate(myuser.id, const ris = await User.findByIdAndUpdate(myuser.id,
{$set: {'profile.ask_zoom_partecipato': true}}); { $set: { 'profile.ask_zoom_partecipato': true } });
if (ris) 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) { } catch (e) {
console.log(e.message); console.log(e.message);
@@ -1031,14 +1047,14 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => {
const mytable = globalTables.getTableByTableName(tablename); const mytable = globalTables.getTableByTableName(tablename);
const fields = {'ALL': 1}; const fields = { 'ALL': 1 };
if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) && if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) &&
(tablename !== 'extralist') && (tablename !== 'extralist') &&
!tools.ModificheConsentite(tablename, fields, id, req.user)) { !tools.ModificheConsentite(tablename, fields, id, req.user)) {
// If without permissions, exit // If without permissions, exit
return res.status(404). 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; let cancellato = false;
@@ -1054,7 +1070,7 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => {
date_deleted: new Date(), date_deleted: new Date(),
}; };
await mytable.findByIdAndUpdate(id, {$set: fieldsvalue}); await mytable.findByIdAndUpdate(id, { $set: fieldsvalue });
cancellato = true; cancellato = true;
} }
@@ -1096,11 +1112,11 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => {
// Do extra things after deleted // Do extra things after deleted
//let ris2 = await actions.doOtherlasThingsAfterDeleted(tablename, myrec, notifBot, req); //let ris2 = await actions.doOtherlasThingsAfterDeleted(tablename, myrec, notifBot, req);
if (!!ris) { 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; return ris;
}); });
@@ -1116,13 +1132,13 @@ router.post('/duprec/:table/:id', authenticate, async (req, res) => {
if (!req.user) { if (!req.user) {
return res.status(404). 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 (!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) {
// If without permissions, exit // If without permissions, exit
return res.status(404). 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) => { return await mytable.findById(id).then(async (mydata) => {
@@ -1139,11 +1155,11 @@ router.post('/duprec/:table/:id', authenticate, async (req, res) => {
// Do extra things after deleted // Do extra things after deleted
return await actions.doOtherThingsAfterDuplicated(tablename, rec). return await actions.doOtherThingsAfterDuplicated(tablename, rec).
then(({myrec}) => { then(({ myrec }) => {
// ... // ...
mytable.findById(myrec._id).then((record) => { mytable.findById(myrec._id).then((record) => {
return res.send( return res.send(
{code: server_constants.RIS_CODE_OK, record, msg: ''}); { code: server_constants.RIS_CODE_OK, record, msg: '' });
}); });
}); });
@@ -1331,7 +1347,7 @@ function load(req, res, version) {
myuser.password = ''; myuser.password = '';
myuser.calcstat = arrdata[13]; myuser.calcstat = arrdata[13];
} }
} catch (e) {} } catch (e) { }
} }
if (version < 91) { if (version < 91) {
res.send({ res.send({
@@ -1422,7 +1438,7 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, async (req, res) => {
return res.status(404).send(); return res.status(404).send();
} }
await CfgServer.find({idapp}).then((arrcfgrec) => { await CfgServer.find({ idapp }).then((arrcfgrec) => {
if (!arrcfgrec) if (!arrcfgrec)
return res.status(404).send(); return res.status(404).send();
@@ -1460,7 +1476,7 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, async (req, res) => {
}).catch((e) => { }).catch((e) => {
console.log(e.message); 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,13 +1568,13 @@ function uploadFile(req, res, version) {
form.uploadDir = mydir2; form.uploadDir = mydir2;
try { try {
form.on('fileBegin', async function(name, file) { form.on('fileBegin', async function (name, file) {
const mydir = folder + '/' + file.newFilename; const mydir = folder + '/' + file.newFilename;
// tools.mkdirpath(mydir); // tools.mkdirpath(mydir);
file.path = mydir file.path = mydir
}); });
form.on('file', async function(name, file) { form.on('file', async function (name, file) {
try { try {
console.log('1) Uploading ' + file.originalFilename); console.log('1) Uploading ' + file.originalFilename);
const mydir = tools.getdirByIdApp(idapp) + dirmain + const mydir = tools.getdirByIdApp(idapp) + dirmain +
@@ -1582,8 +1598,8 @@ function uploadFile(req, res, version) {
oldpath = file.newFilename; oldpath = file.newFilename;
let fromfile = '.'+server_constants.DIR_UPLOAD + '/' + dir + '/' + oldpath; let fromfile = '.' + server_constants.DIR_UPLOAD + '/' + dir + '/' + oldpath;
let tofile = '.'+server_constants.DIR_UPLOAD + '/' + dir + '/' +file.originalFilename; let tofile = '.' + server_constants.DIR_UPLOAD + '/' + dir + '/' + file.originalFilename;
let mydircurrent = process.cwd() + '/src/server/router/upload/' + dir; let mydircurrent = process.cwd() + '/src/server/router/upload/' + dir;
fromfile = mydircurrent + '/' + oldpath; fromfile = mydircurrent + '/' + oldpath;
tofile = mydir + '/' + file.originalFilename; tofile = mydir + '/' + file.originalFilename;
@@ -1613,28 +1629,28 @@ function uploadFile(req, res, version) {
// SMALL // SMALL
// questa opzione 'failOnError' serve per risolvere l'errore (Error: VipsJpeg: Invalid SOS parameters for sequential JPEG // questa opzione 'failOnError' serve per risolvere l'errore (Error: VipsJpeg: Invalid SOS parameters for sequential JPEG
sharp(newname, {failOnError: false}). sharp(newname, { failOnError: false }).
resize(64, 64). resize(64, 64).
withMetadata(). withMetadata().
toFile(resized_img_small); toFile(resized_img_small);
// MEDIUM // MEDIUM
let resized_img = tools.extractFilePath(newname) + '/' + server_constants.PREFIX_IMG + tools.extractFileName(newname); let resized_img = tools.extractFilePath(newname) + '/' + server_constants.PREFIX_IMG + tools.extractFileName(newname);
sharp(newname, {failOnError: false}). sharp(newname, { failOnError: false }).
resize({ resize({
width: 512, width: 512,
// height: 512, // height: 512,
//fit: sharp.fit.cover, //fit: sharp.fit.cover,
fit: sharp.fit.contain, fit: sharp.fit.contain,
// position: sharp.strategy.entropy, // position: sharp.strategy.entropy,
}).withMetadata().toFile(resized_img, function(err) { }).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)) { if (tools.isFileExists(resized_img)) {
// console.log('4) Cancella l \'immagine grande originale:', newname); // console.log('4) Cancella l \'immagine grande originale:', newname);
// DELETE THE ORIGINAL BIG // DELETE THE ORIGINAL BIG
tools.delete(newname, false, () => {}); tools.delete(newname, false, () => { });
// console.log('5) Rinomina l\'immagine Media da', resized_img, 'a:', newname); // console.log('5) Rinomina l\'immagine Media da', resized_img, 'a:', newname);
// RENAME THE MEDIUM IN THE ORIGINAL NAME // RENAME THE MEDIUM IN THE ORIGINAL NAME
@@ -1666,7 +1682,7 @@ function uploadFile(req, res, version) {
} }
}); });
form.on('end', function() { form.on('end', function () {
console.log('-> upload done'); console.log('-> upload done');
}); });
@@ -1735,7 +1751,7 @@ function deleteFile(req, res, version) {
tools.delete(fullpathfile, true, (err) => { tools.delete(fullpathfile, true, (err) => {
if (err) console.log('err', err); if (err) console.log('err', err);
if (err === undefined || err.errno === -2) 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) { } catch (e) {

View File

@@ -48,6 +48,7 @@ router.post('/load', async (req, res) => {
reg_weekly: await User.calcRegWeekly(idapp), reg_weekly: await User.calcRegWeekly(idapp),
lastsreg: await User.getLastUsers(idapp), lastsreg: await User.getLastUsers(idapp),
lastsonline: await User.getLastOnlineUsers(idapp), lastsonline: await User.getLastOnlineUsers(idapp),
diffusorilist: await User.getDiffusoriUsers(idapp),
checkuser: await User.checkUser(idapp, username), checkuser: await User.checkUser(idapp, username),
// navi_partite: await Nave.getNaviPartite(idapp), // navi_partite: await Nave.getNaviPartite(idapp),
// navi_in_partenza: await Nave.getNaviInPartenza(idapp), // navi_in_partenza: await Nave.getNaviInPartenza(idapp),

View File

@@ -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 = { let mylocalsconf = {
idapp, idapp,
@@ -286,6 +286,7 @@ module.exports = {
locale: lang, locale: lang,
nomeapp: tools.getNomeAppByIdApp(idapp), nomeapp: tools.getNomeAppByIdApp(idapp),
strlinksetpassword: tools.getlinkRequestNewPassword(idapp, emailto, tokenforgot), strlinksetpassword: tools.getlinkRequestNewPassword(idapp, emailto, tokenforgot),
tokenforgot_code,
emailto: emailto, emailto: emailto,
}; };