diff --git a/src/server/models/user.js b/src/server/models/user.js index 9762d8c..86b32e0 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -461,6 +461,18 @@ UserSchema.methods.generateAuthToken = function (req) { }); }; +UserSchema.statics.setOnLine = function (idapp, username) { + const User = this; + + try { + return User.findOneAndUpdate({ idapp, username }, { $set: { lasttimeonline: new Date() } }); + } catch (e) { + + } + +}; + + UserSchema.statics.setPermissionsById = function (id, perm) { const user = this; @@ -1273,31 +1285,33 @@ UserSchema.statics.createNewReqRegistrationGetLink = async function (idapp, user }); if (user) { - if (!user.date_tokenreg || (!user.tokenreg) || (user.tokenreg && (user.date_tokenreg < new Date().getTime()))) { + if (true) { // Se รจ scaduto, ne crea uno nuovo // Creo il tokenforgot - let mycodestr = user._id.toHexString() + new Date().getTime().toString(); - user.tokenreg = jwt.sign(mycodestr, process.env.SIGNCODE). - toString(); - if (user.tokenreg) { - try { - user.tokenreg = user.tokenreg.replaceAll('.', ''); - user.tokenreg = user.tokenreg.replaceAll('/', ''); - user.tokenreg = user.tokenreg.slice(-8); - } catch (e) { - console.error('err', e); + if (!user.date_tokenreg || (!user.tokenreg) || (user.tokenreg && (user.date_tokenreg < new Date().getTime()))) { + + let mycodestr = user._id.toHexString() + new Date().getTime().toString(); + user.tokenreg = jwt.sign(mycodestr, process.env.SIGNCODE). + toString(); + + if (user.tokenreg) { + try { + user.tokenreg = user.tokenreg.replaceAll('.', ''); + user.tokenreg = user.tokenreg.replaceAll('/', ''); + user.tokenreg = user.tokenreg.slice(-8); + } catch (e) { + console.error('err', e); + } } } - user.date_tokenreg = tools.AddDate(new Date(), 2); + user.date_tokenreg = tools.AddDate(new Date(), 1); return await user.save().then(() => { return user.tokenreg; }); - } else { - return user.tokenreg; } } @@ -3535,6 +3549,31 @@ UserSchema.statics.getLastOnlineUsers = async function (idapp) { }; +UserSchema.statics.getLastSharedLink = async function (idapp) { + const User = this; + + const lastn = 10; + + return await User.find( + { + idapp, + $or: [ + { deleted: { $exists: false } }, + { deleted: { $exists: true, $eq: false } }], + }, + { + username: 1, + name: 1, + surname: 1, + lasttimeonline: 1, + 'profile.img': 1, + index: 1, + }).sort({ date_tokenreg: -1 }).limit(lastn).then((arr) => { + return arr; + }); + +}; + UserSchema.statics.getDiffusoriUsers = async function (idapp) { const User = this; @@ -4242,7 +4281,7 @@ UserSchema.statics.tooManyReqPassword = async function (idapp, email, set) { await User.findOneAndUpdate({ _id: user._id }, { $set: { retry_pwd: user.retry_pwd } }); } - return user.retry_pwd > maxnum ; + return user.retry_pwd > maxnum; } }; diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 3a5103a..e54394d 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -278,6 +278,10 @@ router.post('/settable', authenticate, async (req, res) => { mydata.idapp = req.user.idapp; const idapp = mydata.idapp; + if (req.user && req.user.username) { + User.setOnLine(req.user.idapp, req.user.username); + } + let consentito = false; try { @@ -564,6 +568,10 @@ router.post('/gettable', authenticate, (req, res) => { try { + if (req.user && req.user.username) { + User.setOnLine(req.user.idapp, req.user.username); + } + return mytable.executeQueryTable(idapp, params, req.user).then(ris => { return res.send(ris); diff --git a/src/server/router/sendmsg_router.js b/src/server/router/sendmsg_router.js index 9dd492f..971447a 100755 --- a/src/server/router/sendmsg_router.js +++ b/src/server/router/sendmsg_router.js @@ -31,6 +31,10 @@ router.post('/', authenticate, (req, res) => { tools.mylog('crea SendMsg'); const myrecmsg = new SendMsg(body); + if (req.user && req.user.username) { + User.setOnLine(req.user.idapp, req.user.username); + } + const check = tools.checkUserOk(myrecmsg.origin.username, req.user.username, res); if (check.exit) return check.ret; @@ -74,6 +78,10 @@ router.get('/:username/:lastdataread/:idapp', authenticate, (req, res) => { const idapp = req.params.idapp; // var category = req.params.category; + if (req.user && req.user.username) { + User.setOnLine(req.user.idapp, req.user.username); + } + if (req.user.idapp !== idapp) { // I'm trying to get something not mine! return res.status(404).send({ code: server_constants.RIS_CODE_NOT_MY_USERNAME }); diff --git a/src/server/router/site_router.js b/src/server/router/site_router.js index 923501b..7a27e38 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), + lastssharedlink: await User.getLastSharedLink(idapp), diffusorilist: await User.getDiffusoriUsers(idapp), checkuser: await User.checkUser(idapp, username), // navi_partite: await Nave.getNaviPartite(idapp), diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index 45b50e2..71f4cf6 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -248,7 +248,7 @@ router.post('/', async (req, res) => { user.aportador_solidario = await User.getRealUsernameByUsername(user.idapp, user.aportador_solidario); } - /*if (!id_aportador && tools.getAskToVerifyReg(body.idapp)) { + if (!id_aportador && tools.getAskToVerifyReg(body.idapp)) { // Si sta tentando di registrare una persona sotto che non corrisponde! let msg = 'Il link di registrazione non sembra risultare valido.
invitante: ' + user.aportador_solidario + '
username: ' + user.username; @@ -260,7 +260,7 @@ router.post('/', async (req, res) => { msg: '', }); return 1; - }*/ + } if (utentenonancoraVerificato) { if (id_aportador) {