///////////////////////////////////////////////// // APPELS DES MODULES ///////////////////////////////////////////////// const moment = require('moment'); const nodemailer = require('nodemailer'); 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'); ///////////////////////////////////////////////// // APPELS DES FONCTIONS ///////////////////////////////////////////////// // FAIRE UNE PAUSE const sleep = require("./../modules/sleep"); //////////////////////////////////////////////////// // 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 const mail_objet = `[WUZUKI] DEMANDE DE CONTACT DEPUIS LE SITE INTERNET - ${req.session.nom}`; const mail_html = `
Bonjour,
Une personne a rempli le formulaire de contact du site Internet de l'AFPS.
Voici ses coordonnées et son message :
NOM : ${req.session.nom}
PRÉNOM : ${req.session.prenom}
MAIL : ${req.session.mail}
MESSAGE :
${req.session.commentaire}
WUZUKI, programme du site Internet de l'AFPS
`; const mailOptions = { from: 'juliechaumard@gmail.com', to: 'juliechaumard@gmail.com', 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(); const 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 }