- Sistemato INVITI alla App
- Completamento Profilo - Registrazione tramite Invito, senza richiedere conferma email.
This commit is contained in:
@@ -6,11 +6,44 @@ const nodemailer = require('nodemailer');
|
||||
const { authenticate, authenticate_noerror, auth_default } = require('../middleware/authenticate');
|
||||
|
||||
const sendemail = require('../sendemail');
|
||||
const tools = require('../tools/general');
|
||||
|
||||
const { User } = require('../models/user');
|
||||
const ListaInvitiEmail = require('../models/listainvitiemail');
|
||||
|
||||
// ==========================================
|
||||
// ENDPOINT API
|
||||
// ==========================================
|
||||
|
||||
router.post('/getinv', async (req, res) => {
|
||||
try {
|
||||
const { tok } = req.body;
|
||||
|
||||
// Validazione
|
||||
if (!tok) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: 'token non presente',
|
||||
});
|
||||
}
|
||||
|
||||
const invitoreg = await ListaInvitiEmail.findOne({ token: tok }).lean();
|
||||
|
||||
if (invitoreg) {
|
||||
|
||||
return res.status(200).json({ success: true, rec: invitoreg });
|
||||
} else {
|
||||
return res.status(200).json({ success: false, rec: null });
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
return res.status(200).json({
|
||||
success: false,
|
||||
message: 'Errore ' + e.message,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* POST /inviti/invia-email
|
||||
* Invia un invito via email
|
||||
@@ -38,38 +71,37 @@ router.post('/invia-email', authenticate, async (req, res) => {
|
||||
|
||||
const dati = { messaggioPersonalizzato, emailAmico, usernameInvitante };
|
||||
|
||||
const userInvitante = await User.findOne({ idapp, username: usernameInvitante }, { username: 1 });
|
||||
const userInvitante = await User.findOne({ idapp, username: usernameInvitante }, { username: 1 }).lean();
|
||||
|
||||
const invitoesiste = await ListaInvitiEmail.findOne({ idapp, email });
|
||||
const invitoesiste = await ListaInvitiEmail.findOne({ idapp, email: emailAmico });
|
||||
if (invitoesiste) {
|
||||
const dateInvito = new Date(invitoesiste.date_Invited);
|
||||
const dateNow = new Date();
|
||||
const diffTime = Math.abs(dateNow - dateInvito);
|
||||
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24 * 7));
|
||||
|
||||
if (diffDays > 7) {
|
||||
if (diffDays > 1) {
|
||||
// Posso reinviare l'invito
|
||||
await ListaInvitiEmail.deleteOne({ _id: invitoesiste._id });
|
||||
invitoesiste = null;
|
||||
} else {
|
||||
return res.status(200).json({
|
||||
success: false,
|
||||
message: `L'invito a questa email è stato già inviato il ${dateInvito.toDateString()}`,
|
||||
message: 'L\'invito a questa email è stato già inviato il ' + tools.getstrDate_DD_MM_YYYY(dateInvito),
|
||||
emailInviata: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const token = crypto.createHash('sha256').update(JSON.stringify(dati)).digest('hex');
|
||||
|
||||
dati.token = token;
|
||||
dati.token = tools.getTokenRandom();
|
||||
|
||||
// aggiungi la email alla lista inviti
|
||||
const listainviti = new ListaInvitiEmail({
|
||||
idapp,
|
||||
email: emailAmico,
|
||||
userIdInvite: userInvitante.username,
|
||||
token,
|
||||
usernameInvitante: userInvitante.username,
|
||||
userIdInvite: userInvitante._id,
|
||||
token: dati.token,
|
||||
});
|
||||
|
||||
await listainviti.save();
|
||||
|
||||
@@ -3,6 +3,8 @@ const router = express.Router();
|
||||
|
||||
const { User } = require('../models/user');
|
||||
|
||||
const ListaInvitiEmail = require('../models/listainvitiemail');
|
||||
|
||||
// const { Nave } = require('../models/nave');
|
||||
const Hours = require('../models/hours');
|
||||
//const { NavePersistente } = require('../models/navepersistente');
|
||||
@@ -136,6 +138,17 @@ router.post('/', async (req, res) => {
|
||||
|
||||
user.linkreg = reg.getlinkregByEmail(body.idapp, body.email, body.username);
|
||||
user.verified_email = false;
|
||||
|
||||
// Se è parte di un invito allora verified_email = true
|
||||
const recinvito = await ListaInvitiEmail.findOne({ email: body.email });
|
||||
if (recinvito) {
|
||||
user.verified_email = true;
|
||||
|
||||
recinvito.registered = true;
|
||||
recinvito.userIdRegistered = user._id;
|
||||
await recinvito.save();
|
||||
}
|
||||
|
||||
user.lasttimeonline = new Date();
|
||||
user.date_reg = new Date();
|
||||
user.aportador_iniziale = user.aportador_solidario;
|
||||
|
||||
Reference in New Issue
Block a user