From 2e41678d03a4fd4c79173651a546c3e0c4fb0148 Mon Sep 17 00:00:00 2001
From: Leonardo Vannucci <leonardo.vannucci@grupposistematica.it>
Date: Mon, 06 Aug 2018 12:27:02 +0200
Subject: [PATCH] Aggiunta proprieta secret key per implementazione PIN opzionale

---
 dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileController.java |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 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 076a8db..4962f61 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
@@ -6,6 +6,7 @@
 
 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;
@@ -30,7 +31,9 @@
 	@Autowired private RegDocumentRepository regDocumentRepository;
 	
 	@RequestMapping("/downloadFile")
-	public ResponseEntity<InputStreamResource> downloadFile(@RequestParam String fileName, @RequestParam long id) throws IOException {
+	public ResponseEntity<InputStreamResource> downloadFile(@RequestParam String fileName,
+															@RequestParam long id,
+															@RequestParam(value = "secretKey", required = false) String secretKey) throws IOException {
 		
 		logger.debug("Avvio download file {} con id {}, fileName, id");
 		
@@ -48,6 +51,22 @@
 			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);

--
Gitblit v1.6.2