the-tip-top-backend/src/controllers/contact.controller.js
soufiane a7f82b1215 fix: replace vulnerable email regex with safe alternatives
- 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>
2025-12-05 15:03:36 +01:00

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
};