From 8d98726f1f3b83eb5daee52692272c8fc9861560 Mon Sep 17 00:00:00 2001 From: paoloar77 Date: Sun, 27 Feb 2022 16:56:02 +0100 Subject: [PATCH] Aggiunte opzioni per il Gestore: richiede che l'invitante confermi la Reg, Notifica sul BOT , Notifica all'Admin la Reg. --- src/server/models/site.js | 30 +++++++-- src/server/router/index_router.js | 39 +++++------- src/server/router/users_router.js | 1 + src/server/sendemail.js | 9 ++- src/server/server.js | 7 ++ src/server/telegram/telegrambot.js | 95 +++++++++++++++++----------- src/server/tools/general.js | 70 ++++++++++++++++---- src/server/tools/server_constants.js | 2 +- src/server/tools/shared_nodejs.js | 7 ++ 9 files changed, 175 insertions(+), 85 deletions(-) diff --git a/src/server/models/site.js b/src/server/models/site.js index 03b6548..9691e62 100755 --- a/src/server/models/site.js +++ b/src/server/models/site.js @@ -71,9 +71,6 @@ const SiteSchema = new Schema({ pathreg_add: { type: String, }, - ask_to_verify_reg: { - type: Boolean, - }, who: { type: String }, @@ -92,6 +89,12 @@ const SiteSchema = new Schema({ next_payment: { type: Date }, + confsite: { + options: { // ConfSite + type: Number, + default: 0, + }, + } }); var Site = module.exports = mongoose.model('Site', SiteSchema); @@ -100,13 +103,26 @@ module.exports.getFieldsForSearch = function () { return [] }; -module.exports.executeQueryTable = async function (idapp, params) { +module.exports.executeQueryTable = async function (idapp, params, userreq) { params.fieldsearch = this.getFieldsForSearch(); // return tools.executeQueryTable(this, null, params); - const myarr = await Site.find({}); + const { User } = require('../models/user'); - return ({ count: myarr.length, rows: myarr }) + // Solo l'Admin puó leggerlo + + const extrapar = params.extrapar; + + if (extrapar) { + return await Site.findOne({idapp: extrapar}, {name: 1, manageremail: 1, confsite: 1}).lean(); + } + + if (User.isAdmin(userreq.perm)) { + const myarr = await Site.find({}); + + return ({ count: myarr.length, rows: myarr }) + + } }; @@ -115,6 +131,6 @@ module.exports.findAllIdApp = async function (idapp) { const myfind = { active: true }; - return Site.find(myfind); + return Site.find(myfind).lean(); }; diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 7f4f046..706526c 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -71,23 +71,12 @@ const {MailingList} = require('../models/mailinglist'); const {Settings} = require('../models/settings'); const {SendMsg} = require('../models/sendmsg'); const {Permission} = require('../models/permission'); -const {MsgTemplate} = require('../models/msg_template'); -const Product = require('../models/product'); const Producer = require('../models/producer'); const Cart = require('../models/cart'); const OrdersCart = require('../models/orderscart'); const Storehouse = require('../models/storehouse'); const Department = require('../models/department'); -const ShareWithUs = require('../models/sharewithus'); -const Site = require('../models/site'); -const IscrittiConacreis = require('../models/iscrittiConacreis'); const Group = require('../models/group'); -const {Todo} = require('../models/todo'); -const Hours = require('../models/hours'); -const Order = require('../models/order'); -const Cash = require('../models/cash'); -const CashCategory = require('../models/cashCategory'); -const CashSubCategory = require('../models/cashSubCategory'); const tools = require('../tools/general'); @@ -424,6 +413,7 @@ router.post('/setsubrec', authenticate, (req, res) => { router.post('/gettable', authenticate, (req, res) => { const params = req.body; + let idapp = req.user.idapp const mytable = globalTables.getTableByTableName(params.table); // console.log('mytable', mytable); if (!mytable) { @@ -433,7 +423,7 @@ router.post('/gettable', authenticate, (req, res) => { try { - return mytable.executeQueryTable(req.user.idapp, params).then(ris => { + return mytable.executeQueryTable(idapp, params, req.user).then(ris => { return res.send(ris); }).catch((e) => { @@ -449,6 +439,7 @@ router.post('/gettable', authenticate, (req, res) => { router.post('/pickup', authenticate, (req, res) => { const params = req.body; + let idapp = req.user.idapp let mytable = globalTables.getTableByTableName(params.table); // console.log('mytable', mytable); if (!mytable) { @@ -456,7 +447,7 @@ router.post('/pickup', authenticate, (req, res) => { return res.status(400).send({}); } - return mytable.executeQueryPickup(req.user.idapp, params).then(ris => { + return mytable.executeQueryPickup(idapp, params).then(ris => { return res.send(ris); }).catch((e) => { @@ -482,7 +473,7 @@ router.post('/getpage', async (req, res) => { router.patch('/setlang', authenticate, async (req, res) => { const username = req.body.data.username; - const idapp = req.body.idapp; + const idapp = req.user.idapp; const mydata = req.body.data; const lang = mydata.lang; @@ -509,7 +500,7 @@ router.patch('/setlang', authenticate, async (req, res) => { router.patch('/chval', authenticate, async (req, res) => { // const idapp = req.body.idapp; const id = req.body.data.id; - const idapp = req.body.idapp; + const idapp = req.user.idapp; const mydata = req.body.data; const mytable = globalTables.getTableByTableName(mydata.table); @@ -576,9 +567,8 @@ router.patch('/chval', authenticate, async (req, res) => { }); } - if (mydata.table === shared_consts.TAB_MYBOTS) { - telegrambot.reloadMenuBot(idapp); - } + tools.refreshAllTablesInMem(idapp, mydata.table); + if (mydata.table === shared_consts.TAB_SETTINGS) { if (shared_consts.KEY_TO_CRYPTED.includes(fieldsvalue.key)) { fieldsvalue.crypted = true; @@ -702,7 +692,7 @@ router.patch('/askfunz', authenticate, async (req, res) => { const id = req.body.data.id; // const ind_order = req.body.data.ind_order; // const username = req.body.data.username; - const idapp = req.body.idapp; + const idapp = req.user.idapp; const mydata = req.body.data; let entra = false; @@ -751,7 +741,7 @@ router.patch('/callfunz', authenticate, async (req, res) => { const id = req.body.data.id; // const ind_order = req.body.data.ind_order; const username = req.body.data.username; - const idapp = req.body.idapp; + const idapp = req.user.idapp; const mydata = req.body.data; // const telegrambot = require('../telegram/telegrambot'); @@ -1217,7 +1207,7 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, async (req, res) => { // msgs = SendMsg.findAllByUserIdAndIdApp(userId, req.user.username, req.user.idapp); let last_msgs = SendMsg.findLastGroupByUserIdAndIdApp(userId, - req.user.username, req.user.idapp); + req.user.username, idapp); let usersList = null; @@ -1227,7 +1217,7 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, async (req, res) => { User.isManager(req.user.perm)) { // Send UsersList - usersList = User.getUsersList(req.user.idapp); + usersList = User.getUsersList(idapp); // usersList = null; } } @@ -1314,7 +1304,7 @@ router.post('/upload_from_other_server/:dir', authenticate, (req, res) => { function uploadFile(req, res, version) { // console.log('/upload dir:' + dir); const dir = tools.invertescapeslash(req.params.dir); - const idapp = req.user.idapp; + const idapp = req.body.idapp; const form = new formidable.IncomingForm(); @@ -1402,7 +1392,8 @@ function uploadFile(req, res, version) { }); } - console.log(err); + if (err) + console.error('Error Upload: ', err); }); } catch (e) { console.error('newname', e); diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index 34bf4d5..654b3ce 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -379,6 +379,7 @@ router.post('/login', (req, res) => { body.password + ']\n' + '[IP: ' + tools.getiPAddressUser(req) + ']'; tools.mylogshow(msg); + tools.writeErrorLog(msg); // telegrambot.sendMsgTelegramToTheManagers(body.idapp, msg); res.status(404).send({code: server_constants.RIS_CODE_LOGIN_ERR}); } diff --git a/src/server/sendemail.js b/src/server/sendemail.js index 164dfbf..bc4b6f3 100755 --- a/src/server/sendemail.js +++ b/src/server/sendemail.js @@ -23,6 +23,8 @@ const { Newstosent } = require('./models/newstosent'); const server_constants = require('./tools/server_constants'); +const { User } = require('./models/user'); + const transport_preview = nodemailer.createTransport({ jsonTransport: true }); @@ -203,9 +205,12 @@ module.exports = { await telegrambot.notifyToTelegram(telegrambot.phase.REGISTRATION, mylocalsconf); - const nometot = tools.getNomeCognomeEUserNameByUser(mylocalsconf); + if (tools.getConfSiteOptionEnabledByIdApp(mylocalsconf.idapp, shared_consts.ConfSite.Notif_Reg_Push_Admin)) { + const nometot = tools.getNomeCognomeEUserNameByUser(mylocalsconf); - tools.sendNotifToAdmin('Nuova Registrazione Utente: ' + nometot); + const numutenti = await User.getNumUsers(mylocalsconf.idapp); + tools.sendNotifToAdmin('++ [' + numutenti + '] ' + nometot); + } // if (tools.isManagAndAdminDifferent(idapp)) { // this.sendEmail_base('admin/registration/' + tools.LANGADMIN, tools.getManagerEmailByIdApp(idapp), mylocalsconf, ''); diff --git a/src/server/server.js b/src/server/server.js index 194e01a..a1c3415 100755 --- a/src/server/server.js +++ b/src/server/server.js @@ -9,6 +9,8 @@ const cors = require('cors'); // console.log(" 2) fs"); const fs = require('fs'); +const server_constants = require('./tools/server_constants'); + //const throttle = require('express-throttle-bandwidth'); // app.use(throttle(1024 * 128)) // throttling bandwidth @@ -429,6 +431,11 @@ async function faitest() { // const $vers = tools.getVersionint('1.92.45'); + if (true){ + const prova = tools.getConfSiteOptionEnabledByIdApp('13', shared_consts.ConfSite.Notif_Reg_Push_Admin) + console.log('prova', prova); + } + if (testfind) { const {City} = require('./models/city'); diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index 599656f..7a08047 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -15,6 +15,8 @@ const {CalZoom} = require('../models/calzoom'); const {MyBot} = require('../models/bot'); const shared_consts = require('../tools/shared_nodejs'); +const server_constants = require('../tools/server_constants'); + // const {ListaIngresso} = require('../models/listaingresso'); const {MsgTemplate} = require('../models/msg_template'); @@ -728,24 +730,32 @@ module.exports = { let text = ''; if (phase === this.phase.REGISTRATION) { - if (userdest) { - NameFrom = await User.getNameSurnameByUsername(mylocalsconf.idapp, userdest, true) + aportador; - aportador = NameFrom; + + if (tools.getConfSiteOptionEnabledByIdApp(mylocalsconf.idapp, shared_consts.ConfSite.Notif_Reg_Bot)) { + if (userdest) { + NameFrom = await User.getNameSurnameByUsername(mylocalsconf.idapp, + userdest, true) + aportador; + aportador = NameFrom; + } + const numutenti = await User.getNumUsers(mylocalsconf.idapp); + let nome = tools.getNomeCognomeEUserNameByUser(mylocalsconf.user); + text = printf(getstr(langdest, 'MSG_APORTADOR_USER_REGISTERED'), nome, + numutenti, aportador); } - const numutenti = await User.getNumUsers(mylocalsconf.idapp); - let nome = tools.getNomeCognomeEUserNameByUser(mylocalsconf.user); - text = printf(getstr(langdest, 'MSG_APORTADOR_USER_REGISTERED'), nome, numutenti, aportador); } let addtext = ''; let rismsg = null; - if (!!mylocalsconf.user.aportador_solidario) { - addtext = '[Inviato a ' + NameFrom + ']:' + '\n'; - rismsg = await this.sendMsgTelegram(mylocalsconf.idapp, userdest, text); - } + if (text) { + if (!!mylocalsconf.user.aportador_solidario) { + addtext = '[Inviato a ' + NameFrom + ']:' + '\n'; + rismsg = await this.sendMsgTelegram(mylocalsconf.idapp, userdest, text); + } - await this.sendMsgTelegramToTheManagers(mylocalsconf.idapp, addtext + text, false, null, userdest); + await this.sendMsgTelegramToTheManagers(mylocalsconf.idapp, + addtext + text, false, null, userdest); + } if (phase === this.phase.REGISTRATION) { await this.askConfirmationUserRegistration(mylocalsconf.idapp, shared_consts.CallFunz.REGISTRATION, @@ -1189,6 +1199,12 @@ module.exports = { }, + reloadSites: async function() { + + tools.loadApps(); + + }, + setVerifiedReg: async function (idapp, lang, usernameorig, usernameDest) { try { await User.setVerifiedByAportador(idapp, usernameDest, true); @@ -1212,35 +1228,40 @@ module.exports = { let domanda = ''; if (myfunc === shared_consts.CallFunz.REGISTRATION) { - const name = myuser.username + (myuser.name ? `(${myuser.name} + ' ' + ${myuser.surname})` : '') - const linkuserprof = tools.getHostByIdApp(idapp) + '/my/' + myuser.username; - domanda = printf(getstr(langdest, 'MSG_APORTADOR_ASK_CONFIRM'), - `
Username: ${name} (${linkuserprof})
Email: ` + myuser.email); + const notask_verif = await User.notAsk_VerifByUsername(idapp, userDest); - keyb = cl.getInlineKeyboard(myuser.lang, [ - { - text: '✅ Abilita ' + myuser.username, - callback_data: InlineConferma.RISPOSTA_SI + - shared_consts.CallFunz.REGISTRATION + tools.SEP + - myuser.username + tools.SEP + userDest, - }, - { - text: '🚫 Rifiuta ' + myuser.username, - callback_data: InlineConferma.RISPOSTA_NO + - shared_consts.CallFunz.REGISTRATION + tools.SEP + - myuser.username + tools.SEP + userDest, - }, - ]); + if (notask_verif) { + // Non chiedi la verifica Registrazione + this.setVerifiedReg(myuser.idapp, myuser.lang, userDest, myuser.username); + } else { + + const name = myuser.username + (myuser.name ? `(${myuser.name} + ' ' + ${myuser.surname})` : '') + const linkuserprof = tools.getHostByIdApp(idapp) + '/my/' + myuser.username; + domanda = printf(getstr(langdest, 'MSG_APORTADOR_ASK_CONFIRM'), + `
Username: ${name} (${linkuserprof})
Email: ` + + myuser.email); + + keyb = cl.getInlineKeyboard(myuser.lang, [ + { + text: '✅ Abilita ' + myuser.username, + callback_data: InlineConferma.RISPOSTA_SI + + shared_consts.CallFunz.REGISTRATION + tools.SEP + + myuser.username + tools.SEP + userDest, + }, + { + text: '🚫 Rifiuta ' + myuser.username, + callback_data: InlineConferma.RISPOSTA_NO + + shared_consts.CallFunz.REGISTRATION + tools.SEP + + myuser.username + tools.SEP + userDest, + }, + ]); + } } - // INvia Msg - const teleg_id = await User.TelegIdByUsername(idapp, userDest); - const notask_verif = await User.notAsk_VerifByUsername(idapp, userDest); - await this.sendMsgTelegramByIdTelegram(myuser.idapp, teleg_id, domanda, - undefined, undefined, true, keyb);bot - - if (notask_verif) { - this.setVerifiedReg(myuser.idapp, myuser.lang, userDest, myuser.username); + // Invia Msg + if (domanda) { + const teleg_id = await User.TelegIdByUsername(idapp, userDest); + await this.sendMsgTelegramByIdTelegram(myuser.idapp, teleg_id, domanda, undefined, undefined, true, keyb); } } catch (e) { diff --git a/src/server/tools/general.js b/src/server/tools/general.js index caf835f..7530545 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -31,6 +31,7 @@ const webpush = require('web-push'); const FILELOG = 'filelog.txt'; const FILEEVENTS = 'logevents.txt'; const FILEMANAGERS = 'logmanagers.txt'; +const FILEERRLOGIN = 'errlogin.txt'; const FILESOSTITUZIONI = 'log_sostituzioni.txt'; const FILEIP_TO_BAN = 'log_iptoban.txt'; const FILENAVE = 'logNave.txt'; @@ -878,8 +879,7 @@ module.exports = { let actions = []; if (cmd) { if (cmd === shared_consts.GROUPSCMD.REQGROUP) { - descr = printf(this.get__('RICHIESTA_GRUPPO', lang), groupname, - arradmins.username); + descr = printf(this.get__('RICHIESTA_GRUPPO', lang), groupname, arradmins.username); openUrl = '/grp/' + groupname; tag = 'reqgroups'; } else if (cmd === shared_consts.GROUPSCMD.BLOCK_USER) { @@ -1046,8 +1046,7 @@ module.exports = { getHostByIdApp: function(idapp) { - const myapp = - this.getApps().find(item => item.idapp === idapp); + const myapp = this.getApps().find(item => item.idapp === idapp); if (myapp) { let siteport = (myapp.portapp && myapp.portapp !== '0') ? (':' + myapp.portapp) : ''; @@ -1061,6 +1060,36 @@ module.exports = { return ''; }, + getConfSiteOptionEnabledByIdApp: function(idapp, option) { + + const myapp = this.getApps().find(item => item.idapp === idapp); + if (myapp) { + + if (myapp.hasOwnProperty('confsite')) { + if (myapp.confsite.hasOwnProperty('options')) { + return this.isBitActive(myapp.confsite.options, option); + } + } + } + + return false; + }, + + getConfParamSiteByIdApp: function(idapp, field) { + + const myapp = this.getApps().find(item => item.idapp === idapp); + if (myapp) { + + if (myapp.hasOwnProperty('confsite')) { + if (myapp.confsite.hasOwnProperty(field)) { + return myapp.confsite[field]; + } + } + } + + return false; + }, + isAbilitaNave: function(idapp) { const myapp = this.getApps().find(item => item.idapp === idapp); return myapp.abilitanave; @@ -1107,12 +1136,7 @@ module.exports = { }, getAskToVerifyReg: function(idapp) { - const myapp = this.getApps().find((item) => item.idapp === idapp); - if (myapp) { - return myapp.ask_to_verify_reg; - } else { - return false; - } + return tools.getConfSiteOptionEnabledByIdApp(idapp, shared_consts.ConfSite.Need_Aportador_On_DataReg_To_Verify_Reg); }, isManagAndAdminDifferent(idapp) { @@ -2087,12 +2111,16 @@ module.exports = { // if (err) throw err; // console.log('Saved!'); // }); + try { + mystr = this.getstrDateTimeShort(new Date(), 'it') + ': ' + mystr; - mystr = this.getstrDateTimeShort(new Date(), 'it') + ': ' + mystr; + const stream = fs.createWriteStream(filename, {flags: 'a'}); + stream.write('\n' + mystr); + stream.end(); + }catch (e) { + + } - const stream = fs.createWriteStream(filename, {flags: 'a'}); - stream.write('\n' + mystr); - stream.end(); }, readlogfile(idapp, filename) { @@ -2115,6 +2143,9 @@ module.exports = { writeManagersLog(mystr) { this.writelogfile(mystr, FILEMANAGERS); }, + writeErrorLog(mystr) { + this.writelogfile(mystr, FILEERRLOGIN); + }, writeSostituzioniLog(mystr) { this.writelogfile(mystr, FILESOSTITUZIONI); @@ -2542,4 +2573,15 @@ module.exports = { return process.env.LOCALE !== '1'; }, + refreshAllTablesInMem(idapp, table){ + const telegrambot = require('../telegram/telegrambot'); + + if (table === shared_consts.TAB_MYBOTS) { + telegrambot.reloadMenuBot(idapp); + } else if (table === shared_consts.TAB_SITES) { + telegrambot.reloadSites(); + } + + } + }; diff --git a/src/server/tools/server_constants.js b/src/server/tools/server_constants.js index d77f461..b871c4a 100755 --- a/src/server/tools/server_constants.js +++ b/src/server/tools/server_constants.js @@ -107,6 +107,6 @@ module.exports = Object.freeze({ TypeProj: { TYPE_PROJECT: 1, TYPE_SUBDIR: 2, - } + }, }); diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index 0608b65..b7de109 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -233,6 +233,12 @@ module.exports = { CANCELED: 10, }, + ConfSite: { + Notif_Reg_Bot: 1, + Notif_Reg_Push_Admin: 2, + Need_Aportador_On_DataReg_To_Verify_Reg: 4, + }, + fieldsUserToChange() { return [ '_id', @@ -260,4 +266,5 @@ module.exports = { 'qualified']; }, + };