From b5e4a0dc28966479e0f2d5c0d69f2f38f734fee1 Mon Sep 17 00:00:00 2001
From: Leonardo Vannucci <leonardo.vannucci@grupposistematica.it>
Date: Thu, 09 Aug 2018 17:35:28 +0200
Subject: [PATCH] Implementazione recaptcha
---
dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileController.java | 70 +++++++----------------------------
1 files changed, 14 insertions(+), 56 deletions(-)
diff --git a/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileController.java b/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileController.java
index 4962f61..be67cd2 100644
--- a/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileController.java
+++ b/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileController.java
@@ -1,82 +1,40 @@
package it.digione.dg1cloud.controller;
-import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
-import javax.servlet.ServletContext;
-
-import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.InputStreamResource;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
-import it.digione.dg1cloud.model.RegDocument;
-import it.digione.dg1cloud.repository.RegDocumentRepository;
-import it.digione.dg1cloud.service.CloudService;
+import it.digione.dg1cloud.recaptcha.CaptchaSettings;
+import it.digione.dg1cloud.service.Utils;
@Controller
public class DownloadFileController {
- private static final Logger logger = LoggerFactory.getLogger(CloudService.class);
+ private static final Logger logger = LoggerFactory.getLogger(DownloadFileController.class);
- @Autowired private ServletContext servletContext;
- @Autowired private RegDocumentRepository regDocumentRepository;
+ @Autowired private Utils utils;
+ @Autowired CaptchaSettings captchaSettings;
@RequestMapping("/downloadFile")
public ResponseEntity<InputStreamResource> downloadFile(@RequestParam String fileName,
- @RequestParam long id,
- @RequestParam(value = "secretKey", required = false) String secretKey) throws IOException {
+ @RequestParam long id,
+ @RequestParam(value = "secretKey", required = false) String secretKey) throws IOException {
- logger.debug("Avvio download file {} con id {}, fileName, id");
-
- MediaType mediaType = MediaType.APPLICATION_OCTET_STREAM;
- try {
- mediaType = MediaType.parseMediaType(servletContext.getMimeType(fileName));
- } catch (Exception e) {
- logger.warn("Errore nello stabilire il mime type del file. VerrĂ usato " + mediaType.toString(), e);
+ if ( captchaSettings.isEnabled() == true ) {
+ String error = "Download diretto non ammesso. Usare la pagina di download tramite reCaptcha";
+ logger.error(error);
+ throw new RuntimeException("Download diretto non ammesso. Usare la pagina di download tramite reCaptcha");
}
- RegDocument regDocument = regDocumentRepository.getOne(id);
-
- if (regDocument.getFileName().equalsIgnoreCase(fileName) == false ) {
- logger.error("Il nome del file richiesto non corrisponde con quello referenziato dall'id");
- throw new RuntimeException("Il nome del file richiesto non corrisponde con quello referenziato dall'id");
- }
-
- if ( regDocument.getSecretKey() != null ) {
- logger.debug("E' stata specificata una secretKey. Avvio le verifiche.");
- if ( Strings.isEmpty(secretKey) == true ) {
- logger.error("Non e' stata inviata la secretKey");
- throw new RuntimeException("Per scaricare il file occorre specificare la secretKey");
- } else {
- logger.debug("Controllo corrispondenza della secretKey");
- if (secretKey.equals(regDocument.getSecretKey()) == false ) {
- logger.error("La secretKey inviata non corrisponde a quella impostata in fase di richiesta salvataggio del file");
- throw new RuntimeException("La secretKey inviata non corrisponde a quella impostata in fase di richiesta salvataggio del file");
- } else {
- logger.debug("SecretKey verificata correttamente");
- }
- }
- }
-
- File file = new File(regDocument.getFilePath());
- FileInputStream fis = new FileInputStream(file);
- InputStreamResource isr = new InputStreamResource(fis);
- return ResponseEntity.ok()
- // Content-Disposition
- .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + file.getName())
- // Content-Type
- .contentType(mediaType)
- // Contet-Length
- .contentLength(file.length()) //
- .body(isr);
+ return utils.getDownloadResponseEntity(fileName, id, secretKey);
}
+
+
}
--
Gitblit v1.6.2