151 lines
6.3 KiB
JavaScript
151 lines
6.3 KiB
JavaScript
/////////////////////////////////////////////////
|
|
// APPELS DES MODULES
|
|
/////////////////////////////////////////////////
|
|
const moment = require('moment');
|
|
const path = require("path");
|
|
const axios = require('axios');
|
|
|
|
|
|
/////////////////////////////////////////////////
|
|
// APPELS DES MODULES PERSOS
|
|
/////////////////////////////////////////////////
|
|
// loggings
|
|
const logger = require("../public/js/app/logger_wuzuki");
|
|
// Envoie mail
|
|
const envoie_mail = require("../modules/envoie_mail");
|
|
// DB
|
|
const { connect_DB_promise } = require('../modules/db/databaseconnect');
|
|
|
|
////////////////////////////////////////////////////
|
|
// FILE NAME
|
|
////////////////////////////////////////////////////
|
|
const filename = path.parse(__filename).base;
|
|
|
|
/////////////////////////////////////////////////
|
|
// GOOGLE SHEET PARAMETERS
|
|
/////////////////////////////////////////////////
|
|
const { GoogleSpreadsheet } = require('google-spreadsheet');
|
|
const GS_creds = require('../inscriptionsafps-53b60452f63d.json');
|
|
const { error } = require("console");
|
|
// Initialize the sheet - doc ID is the long id in the sheets URL
|
|
const GS_contact = new GoogleSpreadsheet(process.env.gsheet_contact);
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////
|
|
// ENREGISTREMENT DES INFORMATIONS SAISIES
|
|
// ENVOIE MAIL VERS AFPS
|
|
// AJOUT DANS GOOGLE SHEET CONTACTS AFPS
|
|
/////////////////////////////////////////////////
|
|
const post_form_envoie_message = async function(req, res){
|
|
logger.info("======================================");
|
|
logger.info("======== FUNCTION post_form_envoie_message ==========");
|
|
logger.info("======================================");
|
|
|
|
moment.locale('fr');
|
|
let now = moment().format("DD/MM/YYYY");
|
|
|
|
/////////////////////////////////////////////////
|
|
// RÉCUPÉRATION DES DONNÉES DU FORMULAIRE DANS LA SESSION EN COURS et dans la tableau DATA
|
|
/////////////////////////////////////////////////
|
|
|
|
// VÉRIFIER SI CAPTCHA A BIEN ÉTÉ REMPLI
|
|
const token_captcha = req.body['g-recaptcha-response'];
|
|
if (!token_captcha) {
|
|
logger.info("Captcha non rempli", { numsession: req.session.id });
|
|
req.session.affiche_err_1 = 'Captcha non rempli.';
|
|
return res.redirect('/wuzuki/envoie_message');
|
|
}
|
|
|
|
// un tableau : pour récupérer en même temps les informations saisies dans un tableau
|
|
let data = [];
|
|
|
|
// Boucle sur les noms des champs
|
|
// ajout des infos dans le tableau
|
|
['nom', 'prenom', 'mail', 'commentaire'].forEach(field => {
|
|
req.session[field] = req.body[field];
|
|
data.push({[field] : req.body[field]});
|
|
logger.info("#0 " + field + " = " + req.body[field], { numsession: req.session.id, label: filename});
|
|
});
|
|
console.log("data = ", data);
|
|
|
|
|
|
/////////////////////////////////////////////////
|
|
// ENVOIE MAIL AFPS
|
|
// AJOUT DANS GOOGLE SHEET CONTACTS AFPS
|
|
/////////////////////////////////////////////////
|
|
|
|
try {
|
|
|
|
// CAPTCHA V3
|
|
const response_captcha = await axios.post(`https://www.google.com/recaptcha/api/siteverify`, null, {
|
|
params: {
|
|
secret: process.env.g_captcha,
|
|
response: token_captcha
|
|
}
|
|
});
|
|
const response_captcha_data = response_captcha.data;
|
|
console.log("response_captcha_data = ", response_captcha_data.success);
|
|
logger.info("#0 response_captcha_data : SUCCESS = " + response_captcha_data.success + " / score = " + response_captcha_data.score, { numsession: req.session.id, label: filename});
|
|
|
|
// CAPTCHA V3
|
|
|
|
if (response_captcha_data.success && response_captcha_data.score >= 0.8) {
|
|
/////////////////////////////////////////////////
|
|
// ENVOIE MAIL À L'AFPS
|
|
var mail_objet = `[WUZUKI] DEMANDE DE CONTACT DEPUIS LE SITE INTERNET - ${req.session.nom}`;
|
|
var mail_html = `<p>Bonjour,</p><p>Une personne a rempli le <strong>formulaire de contact du site Internet de l'AFPS.</strong><br>Voici ses coordonnées et son message :</p><br><p><span style='color: #E73058;'>NOM : </span>${req.session.nom}</p><p><span style='color: #E73058;'>PRÉNOM : </span>${req.session.prenom}</p><p><span style='color: #E73058;'>MAIL : </span>${req.session.mail}</p><p><span style='color: #E73058;'>MESSAGE :</span><br>${req.session.commentaire}</p><br><p>WUZUKI, programme du site Internet de l'AFPS</p>`;
|
|
var mailOptions = {
|
|
from: 'afps.inscription@gmail.com',
|
|
to: 'afpedagogiesuzuki@gmail.com',
|
|
cc: 'supplies@juliechaumard.paris',
|
|
subject: mail_objet,
|
|
html: mail_html
|
|
};
|
|
await envoie_mail.envoie_mail(mailOptions);
|
|
|
|
/////////////////////////////////////////////////
|
|
// AJOUT DE LA DEMANDE DE CONTACT DANS GOOGLE SHEET CONTACTS AFPS
|
|
await GS_contact.useServiceAccountAuth(GS_creds);
|
|
await GS_contact.loadInfo();
|
|
let GS_sheet_contact = GS_contact.sheetsByTitle['demande_contact'];
|
|
await GS_sheet_contact.addRows (
|
|
[
|
|
{
|
|
provenance: "site internet afps",
|
|
cta: 'bouton "Nous Contacter"',
|
|
date: now,
|
|
nom: req.session.nom,
|
|
prenom: req.session.prenom,
|
|
mail: req.session.mail,
|
|
message: req.session.commentaire,
|
|
mail_envoye: 'A afpedagogiesuzuki@gmail.com'
|
|
}
|
|
]
|
|
);
|
|
logger.info("AJOUT GOOGLESHEET FIN", { numsession: req.session.id, label: filename});
|
|
|
|
req.session.affiche_err_1 = "Votre message à bien été envoyé à l'Association Française pour la Pédagogie Suzuki.";
|
|
return res.redirect('/wuzuki/envoie_message');
|
|
|
|
} else {
|
|
// Les informations saisies sont vides
|
|
logger.info("Il y a un problème avec la saisie des informations du formulaire", { numsession: req.session.id });
|
|
req.session.affiche_err_1 = 'Il y a un problème avec la saisie des informations du formulaire, veuillez recommencer.';
|
|
return res.redirect('/wuzuki/envoie_message');
|
|
}
|
|
|
|
} catch (error) {
|
|
// Echec de connection à la BD
|
|
logger.error("Il y a un problème système post_form_envoie_message : " + error, { numsession: req.session.id });
|
|
req.session.affiche_err_1 = '"Il y a un problème système, veuillez recommencer, "' + error;
|
|
return res.redirect('/wuzuki/envoie_message');
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
|
|
/////////////////////////////////////////////////
|
|
module.exports = {
|
|
post_form_envoie_message
|
|
}
|