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
This commit is contained in:
AI Assistant
2025-11-25 14:34:44 +03:00
parent b71f079699
commit 9c159eda21

View File

@@ -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);
// Показываем сообщение об успешной отправке