From 9c159eda213939696096d9d3ecc9fb2701c55733 Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Tue, 25 Nov 2025 14:34:44 +0300 Subject: [PATCH] fix: Add protection to prevent saveFormData without SMS code Added validation to ensure saveFormData is only called after SMS verification: - Check if SMS code is provided - Show error message if called without SMS code - Prevent data from being sent to Redis without verification This prevents accidental form submission without SMS approval. Files: - frontend/src/components/form/StepClaimConfirmation.tsx --- .../src/components/form/StepClaimConfirmation.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/frontend/src/components/form/StepClaimConfirmation.tsx b/frontend/src/components/form/StepClaimConfirmation.tsx index 2ad29d3..572f36d 100644 --- a/frontend/src/components/form/StepClaimConfirmation.tsx +++ b/frontend/src/components/form/StepClaimConfirmation.tsx @@ -93,10 +93,18 @@ export default function StepClaimConfirmation({ }, [claimPlanData]); // Функция сохранения данных формы - публикация в Redis канал + // ⚠️ ВАЖНО: Эта функция должна вызываться ТОЛЬКО после SMS-верификации! const saveFormData = useCallback(async (formData: any, smsCode?: string) => { console.log('💾 Публикуем данные формы в Redis канал:', formData); console.log('📱 SMS код для публикации:', smsCode || '(не передан)'); + // Защита: если SMS код не передан, это ошибка (данные не должны отправляться без верификации) + if (!smsCode || smsCode.trim() === '') { + console.error('❌ ОШИБКА: saveFormData вызван БЕЗ SMS кода! Данные не должны отправляться без верификации.'); + message.error('Ошибка: данные не могут быть отправлены без SMS-верификации'); + return; + } + // Получаем данные из claimPlanData для формирования payload const claimId = claimPlanData?.claim_id || claimPlanData?.propertyName?.meta?.claim_id || ''; const unifiedId = claimPlanData?.unified_id || claimPlanData?.propertyName?.meta?.unified_id || ''; @@ -194,12 +202,15 @@ export default function StepClaimConfirmation({ if (response.ok) { message.success('Код подтвержден!'); + console.log('✅ SMS код успешно проверен:', code); + // Закрываем модалку setSmsModalVisible(false); setSmsCodeSent(false); smsForm.resetFields(); // Отправляем данные в Redis канал с SMS кодом + console.log('📤 Вызываем saveFormData с SMS кодом:', code); saveFormData(pendingFormData, code); // Показываем сообщение об успешной отправке