feat: Implement a 15-minute rate limit per email for contact form submissions.
This commit is contained in:
@@ -27,6 +27,21 @@ const Contact = () => {
|
|||||||
|
|
||||||
const handleSubmit = async (e: React.FormEvent) => {
|
const handleSubmit = async (e: React.FormEvent) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
// Vérification du délai de 15 minutes par email
|
||||||
|
const storageKey = `lastMessageTime_${formData.email}`;
|
||||||
|
const lastMessageTime = localStorage.getItem(storageKey);
|
||||||
|
|
||||||
|
if (lastMessageTime) {
|
||||||
|
const timeSinceLastMessage = Date.now() - parseInt(lastMessageTime, 10);
|
||||||
|
const fifteenMinutes = 15 * 60 * 1000;
|
||||||
|
|
||||||
|
if (timeSinceLastMessage < fifteenMinutes) {
|
||||||
|
const remainingMinutes = Math.ceil((fifteenMinutes - timeSinceLastMessage) / 60000);
|
||||||
|
setError(`Veuillez attendre ${remainingMinutes} minutes avant d'envoyer un nouveau message avec cette adresse email.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
setIsSubmitting(true);
|
setIsSubmitting(true);
|
||||||
setError(null);
|
setError(null);
|
||||||
|
|
||||||
@@ -41,6 +56,7 @@ const Contact = () => {
|
|||||||
const result = await sendContactEmail(contactData);
|
const result = await sendContactEmail(contactData);
|
||||||
|
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
|
localStorage.setItem(`lastMessageTime_${formData.email}`, Date.now().toString());
|
||||||
setIsSubmitted(true);
|
setIsSubmitted(true);
|
||||||
setFormData({ name: '', email: '', subject: '', message: '' });
|
setFormData({ name: '', email: '', subject: '', message: '' });
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user