diff --git a/src/server/models/user.js b/src/server/models/user.js index 7de9b40..ead0b48 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -4,7 +4,6 @@ const validator = require('validator'); const jwt = require('jsonwebtoken'); const _ = require('lodash'); - const tools = require('../tools/general'); const {Settings} = require('../models/settings'); @@ -571,7 +570,7 @@ UserSchema.statics.findByCredentials = function(idapp, username, password, pwdcr $or: [ {deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}], - }).lean(); + }); } else { return !user.deleted || (user.deleted && user.subaccount) ? user : null; } @@ -582,10 +581,10 @@ UserSchema.statics.findByCredentials = function(idapp, username, password, pwdcr pwd = user.password; if (pwdcrypted) { - if (pwd === user.password){ - return user + if (pwd === user.password) { + return user; } else { - return false + return false; } } @@ -664,6 +663,7 @@ UserSchema.statics.getUserShortDataByUsername = async function( verified_email: 1, verified_by_aportador: 1, 'profile.teleg_id': 1, + 'profile.username_telegram': 1, // 'profile.saw_zoom_presentation': 1, 'profile.ask_zoom_partecipato': 1, 'profile.qualified': 1, @@ -907,7 +907,6 @@ UserSchema.statics.setVerifiedByAportador = async function( return false; } - }; UserSchema.statics.setnotask_verif = async function( @@ -1071,6 +1070,55 @@ UserSchema.statics.findByLinkTokenforgot = function(idapp, email, tokenforgot) { }); }; +UserSchema.statics.createNewRequestPwd = function(idapp, email) { + const User = this; + + const sendemail = require('../sendemail'); + + return User.findByEmail(idapp, email).then(async (user) => { + if (!user) { + return false; + } else { + // Creo il tokenforgot + user.tokenforgot = jwt.sign(user._id.toHexString(), process.env.SIGNCODE). + toString(); + user.date_tokenforgot = new Date(); + user.lasttimeonline = new Date(); + return user.save().then(async () => { + await sendemail.sendEmail_RequestNewPassword(user.lang, user, user.email, user.idapp, user.tokenforgot); + + return true; + }); + } + + }); +}; + +UserSchema.statics.createNewRequestPwdByUsernameAndGetLink = async function(idapp, username) { + const User = this; + + const user = await User.findOne({ + idapp, + username, + $or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}], + }); + + if (user) { + // Creo il tokenforgot + user.tokenforgot = jwt.sign(user._id.toHexString(), process.env.SIGNCODE). + toString(); + user.date_tokenforgot = new Date(); + user.lasttimeonline = new Date(); + + return user.save().then(() => { + return tools.getlinkRequestNewPassword(idapp, user.email, user.tokenforgot); + }); + } + + return ''; + +}; + UserSchema.statics.findByEmail = function(idapp, email, onlyifVerifiedByAportador) { const User = this; @@ -1976,7 +2024,7 @@ UserSchema.statics.notAsk_VerifByUsername = async function(idapp, username) { idapp, username, $or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}], }, {'notask_verif': 1}).lean().then((rec) => { - return (!!rec && rec.notask_verif) ? true: false; + return (!!rec && rec.notask_verif) ? true : false; }).catch((e) => { console.error('notAsk_VerifByUsername', e); return false; @@ -2052,7 +2100,6 @@ UserSchema.statics.setUsernameTelegram = async function( }; - UserSchema.statics.SetLang = async function(idapp, id, lang) { const User = this; @@ -2155,7 +2202,6 @@ UserSchema.statics.getNameSurnameById = async function(idapp, userId) { }); }; - UserSchema.statics.getusersManagers = async function(idapp) { const User = this; @@ -2219,11 +2265,10 @@ UserSchema.statics.getUsersTelegALL = async function(idapp, username) { const User = this; if (!!username) { - return User.find({idapp, username, 'profile.teleg_id': {$gt: 0}}) - .lean() - then((arrrec) => { - return (!!arrrec) ? arrrec : null; - }). + return User.find({idapp, username, 'profile.teleg_id': {$gt: 0}}).lean(); + then((arrrec) => { + return (!!arrrec) ? arrrec : null; + }). catch((e) => { console.error('getUsersTelegALL', e); }); @@ -2315,8 +2360,8 @@ UserSchema.statics.getFieldsForSearch = function() { {field: 'profile.link_payment', type: tools.FieldType.string}, {field: 'profile.teleg_id', type: tools.FieldType.number}, {field: 'profile.username_telegram', type: tools.FieldType.string}, - {field: 'ipaddr', type: tools.FieldType.string} - ]; + {field: 'ipaddr', type: tools.FieldType.string}, + ]; //{field: 'aportador_solidario', type: tools.FieldType.string} }; @@ -2555,6 +2600,32 @@ UserSchema.statics.getUsersTelegramAttivo = async function(idapp) { return User.count(myfind); }; +UserSchema.statics.getUsersAutorizzati = async function(idapp) { + const User = this; + + const myfind = { + idapp, + $or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}], + 'profile.teleg_id': {$gt: 0}, + verified_by_aportador: true, + }; + + return User.count(myfind); +}; + +UserSchema.statics.getUsersAutorizzare = async function(idapp) { + const User = this; + + const myfind = { + idapp, + $or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}], + 'profile.teleg_id': {$gt: 0}, + $or: [{verified_by_aportador: {$exists: false}}, {verified_by_aportador: {$exists: true, $eq: false}}], + }; + + return User.count(myfind); +}; + UserSchema.statics.getUsersTelegramPending = async function(idapp) { const User = this; @@ -2692,7 +2763,7 @@ UserSchema.statics.calculateStat = async function(idapp, username) { const numGroups = await MyGroup.countDocuments({idapp}); - let numByTab = {} + let numByTab = {}; const globalTables = require('../tools/globalTables'); diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 0caa83e..ace3fc7 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -146,7 +146,7 @@ router.post(process.env.LINKVERIF_REG, (req, res) => { }); // Faccio richiesta di una Nuova Password -router.post(process.env.LINK_REQUEST_NEWPASSWORD, (req, res) => { +router.post(process.env.LINK_REQUEST_NEWPASSWORD, async (req, res) => { const body = _.pick(req.body, ['idapp', 'email']); const idapp = body.idapp; const email = body.email.toLowerCase().trim(); @@ -154,28 +154,21 @@ router.post(process.env.LINK_REQUEST_NEWPASSWORD, (req, res) => { 'POST ' + process.env.LINK_REQUEST_NEWPASSWORD + ' idapp= ' + idapp + ' email = ' + email); - User.findByEmail(idapp, email).then(async (user) => { - if (!user) { - await tools.snooze(5000); + + try { + const ris = await User.createNewRequestPwd(idapp, email); + if (ris) { + 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: ''}); - } else { - // Creo il tokenforgot - user.tokenforgot = jwt.sign(user._id.toHexString(), process.env.SIGNCODE). - toString(); - user.date_tokenforgot = new Date(); - user.lasttimeonline = new Date(); - user.save().then(async () => { - await sendemail.sendEmail_RequestNewPassword(res.locale, user, - user.email, user.idapp, user.tokenforgot); - res.send({code: server_constants.RIS_CODE_OK, msg: ''}); - }); } - }).catch((e) => { + } 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}); - }); + } }); diff --git a/src/server/router/push_router.js b/src/server/router/push_router.js index bc37cfc..2594e14 100755 --- a/src/server/router/push_router.js +++ b/src/server/router/push_router.js @@ -126,7 +126,8 @@ router.post('/send', authenticate, async (req, res) => { } try { - params.typesend = shared_consts.TypeSend.PUSH_NOTIFICATION; + if (params.typesend === 0) + params.typesend = shared_consts.TypeSend.PUSH_NOTIFICATION; params.sendreally = true; const ris = await globalTables.SendMsgToParam(idapp, params); diff --git a/src/server/router/site_router.js b/src/server/router/site_router.js index eb12bb3..9829b51 100755 --- a/src/server/router/site_router.js +++ b/src/server/router/site_router.js @@ -30,6 +30,8 @@ router.post('/load', async (req, res) => { // num_imbarcati: 0, // email_non_verif: await User.getEmailNotVerified(idapp), num_teleg_attivo: await User.getUsersTelegramAttivo(idapp), + num_autorizzati: await User.getUsersAutorizzati(idapp), + num_autorizzare: await User.getUsersAutorizzare(idapp), num_teleg_pending: await User.getUsersTelegramPending(idapp), // num_qualificati: await User.getNumUsersQualified(idapp, 2), // num_requisiti: await User.getNumUsersQualified(idapp, 0), diff --git a/src/server/router/subscribe_router.js b/src/server/router/subscribe_router.js index c1bedee..811d9d3 100755 --- a/src/server/router/subscribe_router.js +++ b/src/server/router/subscribe_router.js @@ -52,7 +52,7 @@ router.post('/', authenticate, (req, res) => { if (myitem === null) { myitem = subscriptionModel; - tools.mylogshow('Subscription NOT EXISTED IN DB, so I use this created!', myitem) + tools.mylogshow('Subscription NOT EXISTED IN DB, so I use this created!') } else { myitem.endpoint = subscriptionModel.endpoint; myitem.keys = subscriptionModel.keys; diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index ce06cde..fa70412 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -250,7 +250,7 @@ router.post('/', async (req, res) => { await User.setaportador_solidario(user.idapp, user.username, user.aportador_solidario); - const myuser = await User.findOne({_id: trovarec._id}).lean(); + const myuser = await User.findOne({_id: trovarec._id}); if (myuser) { await telegrambot.askConfirmationUser(myuser.idapp, shared_consts.CallFunz.REGISTRATION, myuser); diff --git a/src/server/sendemail.js b/src/server/sendemail.js index fa3b16c..906631c 100755 --- a/src/server/sendemail.js +++ b/src/server/sendemail.js @@ -177,10 +177,6 @@ module.exports = { const strlinkreg = tools.getHostByIdApp(idapp) + process.env.LINKVERIF_REG + `?idapp=${idapp}&idlink=${idreg}`; return strlinkreg; }, - getlinkRequestNewPassword: function (idapp, email, tokenforgot) { - const strlinkreg = tools.getHostByIdApp(idapp) + process.env.LINK_UPDATE_PASSWORD + `?idapp=${idapp}&email=${email}&tokenforgot=${tokenforgot}`; - return strlinkreg; - }, sendEmail_Registration: async function (lang, emailto, user, idapp, idreg) { // console.log('idapp', idapp, tools.getNomeAppByIdApp(idapp)); @@ -258,7 +254,7 @@ module.exports = { dataemail: await this.getdataemail(idapp), locale: lang, nomeapp: tools.getNomeAppByIdApp(idapp), - strlinksetpassword: this.getlinkRequestNewPassword(idapp, emailto, tokenforgot), + strlinksetpassword: tools.getlinkRequestNewPassword(idapp, emailto, tokenforgot), emailto: emailto, }; diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index b89192e..465f72a 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -254,6 +254,7 @@ const Menu = { AIUTO: '๐Ÿ”ฎ Help', ALTRO: emoji.get('newspaper') + ' Altro', SETPICPROFILE: '๐Ÿ–ผ SetPicProfile', + RESETPWD: '๐Ÿ”‘ SetResetPwd', // MSG_TO_NAVE: emoji.get('incoming_envelope') + 'Msg_to_Navi', // MSG_NO_7_REQ: emoji.get('incoming_envelope') + 'No 7 Req.', // MSG_NO_9_REQ: emoji.get('incoming_envelope') + 'No 9 Req', @@ -490,12 +491,14 @@ const txt = { '๐Ÿ‘‰๐Ÿป 3.Premi su Username nella sezione account.\n' + '๐Ÿ‘‰๐Ÿป 4. Digita il tuo username. Deve essere un nome ancora libero e non giร  usato da altri.\n' + '๐Ÿ‘‰๐Ÿป 5. Per confermare premi sull\'icona con la spunta in alto a destra.\n' + - '๐Ÿ Infine scrivi OK su questa chat. \n\n' + + '๐Ÿ Infine scrivi OK su questa chat. \n' + + '(Se non riesci clicca qui per la guida: www.nigiara.it/telegram/come-impostare-uno-username-su-telegram.htm) \n\n' + '๐Ÿ’ฌ In questo modo le persone potranno contattarti dalla APP cliccando sull\'icona di Telegram, presente nel tuo profilo.', MSG_SET_USERNAME_OK: '๐Ÿ˜„๐Ÿ˜„โœ…โœ… Ottimo! Hai impostato lo Username Telegram!\n\n' + 'Ora le persone potranno contattarti su Telegram, anche dalla APP visitando il tuo profilo e cliccando sull\'icona di Telegram, (senza dover pubblicare il proprio numero di cellulare).\n\n' + 'Ora puoi proseguire sulla APP.', MSG_SET_PICPROFILE: '๐Ÿ–ผ Abbiamo impostato la tua foto del Profilo, copiandola dalla foto profilo di Telegram. Potrai comunque cambiarla dalla APP (%s)', + MSG_RESETPWD: 'Clicca qui per impostare una nuova password per accedere alla APP:', MSG_ERR_UNKNOWN_VERIFY_CODE: 'Errore durante il salvataggio sul Server. Riprovare piรบ tardi', MSG_EXIT_TELEGRAM: 'L\'account รจ stato ora scollegato da questo Telegram BOT.', MSG_APORTADOR_USER_REGISTERED: emo.FIRE + @@ -922,13 +925,13 @@ const MyTelegramBot = { await this.sendMsgTelegramToTheManagers(mylocalsconf.idapp, addtext + text); }, - askConfirmationUser: async function(idapp, myfunc, myuser, userDest = '', {groupname, groupid}) { - - const cl = getclTelegByidapp(idapp); + askConfirmationUser: async function(idapp, myfunc, myuser, userDest = '', groupname = '', groupid = '') { try { + const cl = getclTelegByidapp(idapp); const langdest = myuser.lang; + const telegid = myuser.profile.teleg_id; let keyb = null; let domanda = ''; @@ -936,12 +939,21 @@ const MyTelegramBot = { const struserinfomsg = tools.getUserInfoMsg(idapp, myuser); if (myfunc === shared_consts.CallFunz.REGISTRATION) { + + cl.setPhotoProfile(myuser, telegid, false); + + const rismsg = await MsgTemplate.getMsgByLang(idapp, shared_consts.TypeMsgTemplate.MSG_BENVENUTO, myuser.lang); + const rismsg2 = await MsgTemplate.getMsgByLang(idapp, shared_consts.TypeMsgTemplate.MS_SHARE_LINK, myuser.lang); + + await cl.sendMsgLog(telegid, rismsg.body); + await cl.sendMsg(telegid, rismsg2.body); + userDest = myuser.aportador_solidario; const notask_verif = await User.notAsk_VerifByUsername(idapp, userDest); if (notask_verif) { // Non chiedi la verifica Registrazione - setVerifiedReg(myuser.idapp, myuser.lang, myuser.username, userDest); + await setVerifiedReg(myuser.idapp, myuser.lang, myuser.username, userDest); } else { domanda = getstr(langdest, 'MSG_APORTADOR_ASK_CONFIRM') + '
' + struserinfomsg; @@ -968,7 +980,7 @@ const MyTelegramBot = { }, { text: '๐Ÿšซ Rifiuta ' + myuser.username, - callback_data: InlineConferma.RISPOSTA_NO + myfunc + tools.SEP + myuser.username + tools.SEP + '' + tools.SEP + groupid , + callback_data: InlineConferma.RISPOSTA_NO + myfunc + tools.SEP + myuser.username + tools.SEP + '' + tools.SEP + groupid, }, ]); } @@ -1276,8 +1288,7 @@ async function sendMsgTelegramToTheAdmin(idapp, text, msg) { async function setVerifiedReg(idapp, lang, usernameorig, usernameDest) { try { await User.setVerifiedByAportador(idapp, usernameorig, true); - await User.setFriendsCmd(idapp, usernameorig, usernameDest, - shared_consts.FRIENDSCMD.SETFRIEND); + await User.setFriendsCmd(idapp, usernameorig, usernameDest, shared_consts.FRIENDSCMD.SETFRIEND); const msgDest = printf(getstr(lang, 'MSG_APORTADOR_CONFIRMED'), `${usernameorig}`, usernameDest); @@ -1510,15 +1521,14 @@ class Telegram { if (rec.status === Status.VERIFIED) { if (rec.user) { - if (rec.user.profile.username_telegram && msg.from.id > 0 && - !msg.from.username) { + if (rec.user.profile.username_telegram && msg.from.id > 0 && !msg.from.username) { rec.user.profile.username_telegram = msg.from.username; await User.setUsernameTelegram(this.idapp, rec.user._id, msg.from.username || '', msg.from.first_name || '', msg.from.last_name || ''); } - if (!rec.user.profile.username_telegram && msg.from.username) { + if (!rec.user.profile.username_telegram && !!msg.from.username) { rec.user.profile.username_telegram = msg.from.username; await User.setUsernameTelegram(this.idapp, rec.user._id, msg.from.username || '', msg.from.first_name || '', @@ -1527,7 +1537,7 @@ class Telegram { printf(getstr(rec.user.lang, 'MSG_SET_USERNAME_OK'))); if (!rec.user.verified_by_aportador) { - this.askConfirmationUser(this.idapp, shared_consts.CallFunz.REGISTRATION, rec.user); + MyTelegramBot.askConfirmationUser(this.idapp, shared_consts.CallFunz.REGISTRATION, rec.user); } } else { @@ -1843,7 +1853,9 @@ class Telegram { } else if (cmd1.toLowerCase() === Menu.MSG_TO_USER) { await this.menumsg_A_Utente(msg); } else if (testo === Menu.SETPICPROFILE) { - await this.setPhotoProfile(rec, msg); + await this.setPhotoProfile(rec.user, msg.from.id); + } else if (testo === Menu.RESETPWD) { + await this.setResetPwd(rec, msg); } else if (this.isSelMenu(msg, testo, 'INDIETRO') || (testo === Menu.it.INDIETRO)) { await this.msgScegliMenu(msg); @@ -2385,6 +2397,13 @@ class Telegram { return this.arrUsers.find((rec) => rec.username_bo === username); } + setRecByUsername(username, myrec) { + const ind = this.arrUsers.findIndex((rec) => rec.username_bo === username); + if (ind >= 0) { + this.arrUsers[ind] = myrec; + } + } + deleteRecInMem(msg) { this.arrUsers = this.arrUsers.filter( (rec) => rec.id !== this.getchatid(msg)); @@ -2496,35 +2515,24 @@ class Telegram { rec.status = Status.VERIFIED; rec.datemenu_updated = null; rec.menuDb = null; - await User.SetTelegramIdSuccess(this.idapp, user._id, msg.from.id).then(async (recuser) => { + const recuser = await User.SetTelegramIdSuccess(this.idapp, user._id, msg.from.id); + if (recuser) { + console.log(recuser.username, ' SI E\' VERIFICATO CON TELEGRAM !'); + let username = recuser.name; - const rismsg = await MsgTemplate.getMsgByLang(this.idapp, shared_consts.TypeMsgTemplate.MSG_BENVENUTO, recuser.lang); - const rismsg2 = await MsgTemplate.getMsgByLang(this.idapp, shared_consts.TypeMsgTemplate.MS_SHARE_LINK, recuser.lang); - - return {recuser, rismsg, rismsg2}; - - }).then(async ({recuser, rismsg, rismsg2}) => { - - if (recuser) { - console.log(recuser.username, ' SI E\' VERIFICATO CON TELEGRAM !'); - this.setPhotoProfile(rec, msg, false); - let username = recuser.name; - - // this.sendMsgLog(msg.from.id, printf(getstr(recuser.lang, 'MSG_VERIFY_OK'), username, tools.getHostByIdApp(this.idapp))); - await this.sendMsgLog(msg.from.id, rismsg.body); - await this.sendMsg(msg.from.id, rismsg2.body); - - if (msg.from.username) { - MyTelegramBot.askConfirmationUser(this.idapp, shared_consts.CallFunz.REGISTRATION, recuser); - } - - this.checkIfUsernameTelegramSet(msg, recuser); - // local_sendMsgTelegramToTheManagers(this.idapp, recuser.name + ' ' + recuser.surname + ' si รจ Verificato a Telegram BOT! (lang=' + recuser.lang + ')' + emo.STARS, msg); + // this.sendMsgLog(msg.from.id, printf(getstr(recuser.lang, 'MSG_VERIFY_OK'), username, tools.getHostByIdApp(this.idapp))); + if (!!msg.from.username) { + await MyTelegramBot.askConfirmationUser(this.idapp, shared_consts.CallFunz.REGISTRATION, recuser); } else { - this.sendMsgLog(msg.from.id, getstr(this.getlang(msg), 'MSG_ERR_UNKNOWN_VERIFY_CODE')); + console.log(' ... MA GLI MANCA L\'USERNAME TELEGRAM !! '); } - }); + this.checkIfUsernameTelegramSet(msg, recuser); + // local_sendMsgTelegramToTheManagers(this.idapp, recuser.name + ' ' + recuser.surname + ' si รจ Verificato a Telegram BOT! (lang=' + recuser.lang + ')' + emo.STARS, msg); + } else { + this.sendMsgLog(msg.from.id, getstr(this.getlang(msg), 'MSG_ERR_UNKNOWN_VERIFY_CODE')); + } + } else { if (rec.retry < 2) { rec.retry++; @@ -3079,7 +3087,7 @@ class Telegram { shared_consts.VISIB_ONLYIF_VERIFIED, isVerified)) ) { rec.active_mem = true; - if (rec.main) { + if (true) { lang = rec.lang; if (!arrlang[rec.lang]) arrlang[rec.lang] = {menu: []}; @@ -3152,8 +3160,9 @@ class Telegram { return recdb.value; } else if (recdb.type === shared_consts.BOTTYPE_PAGE) { if (tools.isNumber(recdb.value)) { - recdb.pagenow = parseInt(recdb.value); - recdb.pageChange = true; + recuser.pagenow = parseInt(recdb.value); + recuser.pageChange = true; + // this.setRecByUsername(recuser.username, recuser); } return ''; } else if (recdb.type === shared_consts.BOTTYPE_MENU) { @@ -3329,6 +3338,7 @@ class Telegram { } } catch (e) { console.error('Error sendMsg', e); + return null; } } @@ -3354,18 +3364,35 @@ class Telegram { return mymenuout; } - async setPhotoProfile(rec, msg, showmsg = true) { + async setResetPwd(rec, msg) { try { if (rec.user) { const idapp = this.idapp; - const bot = this.bot; const username = rec.user.username; const lang = rec.user.lang; + + const link = await User.createNewRequestPwdByUsernameAndGetLink(idapp, username); + if (link) { + local_sendMsgTelegram(idapp, username, getstr(lang, 'MSG_RESETPWD') + '\n' + link); + } + } + } catch (e) { + console.error('Err', e); + } + } + + async setPhotoProfile(user, telegid, showmsg = true) { + try { + if (user) { + const idapp = this.idapp; + const bot = this.bot; + const username = user.username; + const lang = user.lang; const token = this.token; const editprofile = tools.getHostByIdApp(idapp, true) + '/editprofile'; let myfileprofile = tools.getdirByIdApp(idapp, true) + server_constants.DIR_UPLOAD + '/profile/' + username + '/'; - let user_profile = bot.getUserProfilePhotos(msg.from.id); + let user_profile = bot.getUserProfilePhotos(telegid); user_profile.then(function(res) { if (res.photos[0]) { var file_id = res.photos[0][2].file_id; @@ -3390,9 +3417,7 @@ class Telegram { then((ris) => { // console.log('4) sendMsg picprofile Copied !'); if (showmsg) { - local_sendMsgTelegram(idapp, username, - printf(getstr(lang, 'MSG_SET_PICPROFILE'), - editprofile)); + local_sendMsgTelegram(idapp, username, printf(getstr(lang, 'MSG_SET_PICPROFILE'), editprofile)); } }); // console.log('scaricato'); diff --git a/src/server/tools/general.js b/src/server/tools/general.js index 6181f25..6941293 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -816,7 +816,7 @@ module.exports = { }); }); }).catch(error => { - console.log('ERROR: sendNotificationToUser', error); + console.log('ERROR: sendNotificationToUser', error.data.body ? error.data.body : error); }); }); // q.allSettled(parallelSubscriptionCalls).then((pushResults) => { @@ -941,7 +941,7 @@ module.exports = { objmsg.tag = 'reqgroups'; sendnotif = false; // non lo rimandare 2 volte ! - telegrambot.askConfirmationUser(idapp, shared_consts.CallFunz.RICHIESTA_GRUPPO, myuser, singleadmin.username, {groupid: group._id, groupname }); + telegrambot.askConfirmationUser(idapp, shared_consts.CallFunz.RICHIESTA_GRUPPO, myuser, singleadmin.username, groupname, group._id); } else if (cmd === shared_consts.GROUPSCMD.BLOCK_USER) { objmsg.descr = printf(this.get__('RICHIESTA_BLOCCO_GRUPPO', lang), @@ -1403,19 +1403,27 @@ module.exports = { }); if (params.filterand.includes(shared_consts.FILTER_USER_NO_TELEGRAM_ID)) filtriadded.push({'profile.teleg_id': {$lt: 1}}); + if (params.filterand.includes(shared_consts.FILTER_USER_SI_TELEGRAM_ID)) + filtriadded.push({'profile.teleg_id': {$gt: 1}}); if (params.filterand.includes( shared_consts.FILTER_USER_CODICE_AUTH_TELEGRAM)) filtriadded.push({'profile.teleg_checkcode': {$gt: 1}}); if (params.filterand.includes( shared_consts.FILTER_USER_NO_EMAIL_VERIFICATA)) filtriadded.push({verified_email: false}); - if (params.filterand.includes( - shared_consts.FILTER_USER_NO_VERIFIED_APORTADOR)) + if (params.filterand.includes(shared_consts.FILTER_USER_NO_VERIFIED_APORTADOR)) filtriadded.push({ $or: [ {verified_by_aportador: {$exists: false}}, {verified_by_aportador: {$exists: true, $eq: false}}], + }); + if (params.filterand.includes(shared_consts.FILTER_USER_WITHOUT_USERNAME_TELEGRAM)) + filtriadded.push({ + $or: [ + {'profile.username_telegram': {$exists: false}}, + {'profile.username_telegram': {$exists: true, $eq: ''}}], + }); if (params.filterand.includes(shared_consts.FILTER_USER_NO_DREAM)) filtriadded.push({ @@ -2756,5 +2764,9 @@ module.exports = { return msg; }, + getlinkRequestNewPassword: function (idapp, email, tokenforgot) { + const strlinkreg = this.getHostByIdApp(idapp) + process.env.LINK_UPDATE_PASSWORD + `?idapp=${idapp}&email=${email}&tokenforgot=${tokenforgot}`; + return strlinkreg; + }, }; diff --git a/src/server/tools/globalTables.js b/src/server/tools/globalTables.js index 6111515..d503bd5 100755 --- a/src/server/tools/globalTables.js +++ b/src/server/tools/globalTables.js @@ -254,10 +254,12 @@ module.exports = { const mytitle = tools.convertSpecialTags(user, params.title); const mycontent = tools.convertSpecialTags(user, params.content); + let risult = null; + if (params.sendreally) { if (tools.isBitActive(params.typesend, shared_consts.TypeSend.PUSH_NOTIFICATION)) { - tools.sendNotificationToUser(user._id, mytitle, mycontent, params.openUrl, params.openUrl2, params.tag, + risult = tools.sendNotificationToUser(user._id, mytitle, mycontent, params.openUrl, params.openUrl2, params.tag, params.actions). then(ris => { @@ -270,18 +272,27 @@ module.exports = { const telegid = user.profile.teleg_id; if (telegid > 0) { - telegrambot.local_sendMsgTelegramByIdTelegram(idapp, telegid, mycontent); + risult = await telegrambot.local_sendMsgTelegramByIdTelegram(idapp, telegid, mycontent); + await tools.snooze(100); } } } numrec++; - if (params.sendreally) { + if (params.sendreally && risult) { nummsgsent++; } + + if ((nummsgsent % 100) === 0) { + console.log('Inviati ', nummsgsent, 'messaggi...') + } } } + if (nummsgsent > 0) { + console.log('FINE Invio Messaggi ! Inviati Totali: ', nummsgsent, 'su', numrec); + } + return { numrec, nummsgsent, diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index eacca97..10cfef0 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -31,6 +31,8 @@ module.exports = { FILTER_TO_MAKE_MEMBERSHIP_CARD: 524288, FILTER_MEMBERSHIP_CARD_OK: 1048576, FILTER_USER_NO_VERIFIED_APORTADOR: 2097152, + FILTER_USER_SI_TELEGRAM_ID: 4194304, + FILTER_USER_WITHOUT_USERNAME_TELEGRAM: 8388608, OPTIONS_SEARCH_ONLY_FULL_WORDS: 1, OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2,