- Update isValidEmail in helpers.js with secure non-backtracking regex - Use isValidEmail helper in auth.controller.js - Use isValidEmail helper in contact.controller.js - Replace regex with Zod .email() in newsletter.validation.js - Fixes 5 SonarQube Security Hotspots for DoS via backtracking 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
/**
|
|
* Contrôleur pour gérer les messages de contact
|
|
*/
|
|
import { sendContactEmail } from '../services/email.service.js';
|
|
import { isValidEmail } from '../utils/helpers.js';
|
|
|
|
/**
|
|
* POST /api/contact
|
|
* Envoi d'un message depuis le formulaire de contact
|
|
*/
|
|
export const submitContactForm = async (req, res) => {
|
|
try {
|
|
const { fullName, email, subject, message } = req.body;
|
|
|
|
// Validation simple
|
|
if (!fullName || !email || !subject || !message) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: 'Tous les champs sont requis'
|
|
});
|
|
}
|
|
|
|
// Validation email (utilise isValidEmail pour éviter DoS)
|
|
if (!isValidEmail(email)) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: 'Adresse email invalide'
|
|
});
|
|
}
|
|
|
|
// Envoyer l'email
|
|
await sendContactEmail({
|
|
fullName,
|
|
email,
|
|
subject,
|
|
message
|
|
});
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
message: 'Votre message a été envoyé avec succès. Nous vous répondrons dans les plus brefs délais.'
|
|
});
|
|
|
|
} catch (error) {
|
|
console.error('Erreur lors de l\'envoi du message de contact:', error);
|
|
res.status(500).json({
|
|
success: false,
|
|
message: 'Une erreur est survenue lors de l\'envoi de votre message. Veuillez réessayer.'
|
|
});
|
|
}
|
|
};
|
|
|
|
export default {
|
|
submitContactForm
|
|
};
|