diff --git a/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java b/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java index 9d8e3587..4401cb41 100644 --- a/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java +++ b/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java @@ -142,9 +142,9 @@ public class EmployeeInfoFileUploadService { UserIdsPair userIdsPair = SecurityUtil.getUserIdsPair(); LocalDateTime now = LocalDateTime.now(); String departureDateTime = DateUtils.convertToString(now); - - if (userIdsPair == null || !isValidCsvWithSig(multipartFile, signFile)) { - return false; + validateCsvWithSigFormat(multipartFile, signFile); + if (userIdsPair == null) { + throw new FileUploadException("userIdsPair is null"); } String esiaUserId = userIdsPair.getEsiaUserId(); String ervuId = userIdsPair.getErvuId(); @@ -424,10 +424,11 @@ public class EmployeeInfoFileUploadService { clearS3(response); } - private boolean isValidCsvWithSig(MultipartFile file, MultipartFile signFile) { + private void validateCsvWithSigFormat(MultipartFile file, MultipartFile signFile) { if (file == null || signFile == null || file.getOriginalFilename() == null || signFile.getOriginalFilename() == null) { - return false; + throw new FileUploadException("Failed to process files: " + file + ", " + + signFile); } Tika tika = new Tika(); MimeTypes defaultMimeTypes = MimeTypes.getDefaultMimeTypes(); @@ -449,19 +450,18 @@ public class EmployeeInfoFileUploadService { ".sig"); if (!isCsv) { - LOGGER.info("Invalid main file: name={}, mimeType={}", fileName, fileMimeType); + LOGGER.error("Invalid main file: name={}, mimeType={}", fileName, fileMimeType); + throw new LocalizedException("file_format_invalid", MESSAGE_SOURCE, fileName); } if (!isSig) { - LOGGER.info("Invalid signature file: name={}, mimeType={}", signFileName, signMimeType); + LOGGER.error("Invalid signature file: name={}, mimeType={}", signFileName, signMimeType); + throw new LocalizedException("file_format_invalid", MESSAGE_SOURCE, fileName); } - - return isCsv && isSig; } catch (MimeTypeException | IOException e) { - LOGGER.error("Failed to process files: {}, {}", file.getOriginalFilename(), + throw new FileUploadException("Failed to process files: " + file.getOriginalFilename() + ", " + signFile.getOriginalFilename(), e ); - return false; } } diff --git a/backend/src/main/resources/messages/common_errors_messages.properties b/backend/src/main/resources/messages/common_errors_messages.properties index 10efca07..c5ba3058 100644 --- a/backend/src/main/resources/messages/common_errors_messages.properties +++ b/backend/src/main/resources/messages/common_errors_messages.properties @@ -7,7 +7,7 @@ cert_untrusted_root=Сертификат или цепочка сертифик cert_is_not_time_valid=Этот сертификат или один из сертификатов в цепочке сертификатов является недопустимым по времени file_sign_validate=Некорректная электронная подпись mchd_validate_agent=Некорректная машиночитаемая доверенность. Представитель не совпадает с подписантом -mchd_null=Отсутствует машиночитаемая доверенность. Подписант не является руководителем организации. +mchd_null=Подписант не является руководителем организации и отсутствует машиночитаемая доверенность. sign_ogrn_null=Приложена электронная подпись физического лица. sign_ogrn_invalid=Файл подписан не той организацией, под которой была осуществлена загрузка. mchd_status_invalid=Недействующая машиночитаемая доверенность. @@ -20,4 +20,5 @@ mchd_validate_principal=Некорректная машиночитаемая д av_file_infected=Файлы заражены вирусом mchd_cant_parse=Некорректный формат машиночитаемой доверенности mchd_esia_error=Некорректная машиночитаемая доверенность. Доверенность не найдена. -mchd_no_sign_rights=В доверенности (МЧД) нет полномочия "Подписание сведений о воинском учете организации для загрузки в личный кабинет юридических лиц ГИС ЕРВУ" \ No newline at end of file +mchd_no_sign_rights=В доверенности (МЧД) нет полномочия "Подписание сведений о воинском учете организации для загрузки в личный кабинет юридических лиц ГИС ЕРВУ" +file_format_invalid=Неверный формат или расширения файла {0} \ No newline at end of file diff --git a/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties b/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties index ca3b8cc6..c5ba3058 100644 --- a/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties +++ b/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties @@ -20,4 +20,5 @@ mchd_validate_principal=Некорректная машиночитаемая д av_file_infected=Файлы заражены вирусом mchd_cant_parse=Некорректный формат машиночитаемой доверенности mchd_esia_error=Некорректная машиночитаемая доверенность. Доверенность не найдена. -mchd_no_sign_rights=В доверенности (МЧД) нет полномочия "Подписание сведений о воинском учете организации для загрузки в личный кабинет юридических лиц ГИС ЕРВУ" \ No newline at end of file +mchd_no_sign_rights=В доверенности (МЧД) нет полномочия "Подписание сведений о воинском учете организации для загрузки в личный кабинет юридических лиц ГИС ЕРВУ" +file_format_invalid=Неверный формат или расширения файла {0} \ No newline at end of file