Leonardo Vannucci
2018-08-06 2e41678d03a4fd4c79173651a546c3e0c4fb0148
dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileController.java
....@@ -6,6 +6,7 @@
66
77 import javax.servlet.ServletContext;
88
9
+import org.apache.logging.log4j.util.Strings;
910 import org.slf4j.Logger;
1011 import org.slf4j.LoggerFactory;
1112 import org.springframework.beans.factory.annotation.Autowired;
....@@ -30,7 +31,9 @@
3031 @Autowired private RegDocumentRepository regDocumentRepository;
3132
3233 @RequestMapping("/downloadFile")
33
- public ResponseEntity<InputStreamResource> downloadFile(@RequestParam String fileName, @RequestParam long id) throws IOException {
34
+ public ResponseEntity<InputStreamResource> downloadFile(@RequestParam String fileName,
35
+ @RequestParam long id,
36
+ @RequestParam(value = "secretKey", required = false) String secretKey) throws IOException {
3437
3538 logger.debug("Avvio download file {} con id {}, fileName, id");
3639
....@@ -48,6 +51,22 @@
4851 throw new RuntimeException("Il nome del file richiesto non corrisponde con quello referenziato dall'id");
4952 }
5053
54
+ if ( regDocument.getSecretKey() != null ) {
55
+ logger.debug("E' stata specificata una secretKey. Avvio le verifiche.");
56
+ if ( Strings.isEmpty(secretKey) == true ) {
57
+ logger.error("Non e' stata inviata la secretKey");
58
+ throw new RuntimeException("Per scaricare il file occorre specificare la secretKey");
59
+ } else {
60
+ logger.debug("Controllo corrispondenza della secretKey");
61
+ if (secretKey.equals(regDocument.getSecretKey()) == false ) {
62
+ logger.error("La secretKey inviata non corrisponde a quella impostata in fase di richiesta salvataggio del file");
63
+ throw new RuntimeException("La secretKey inviata non corrisponde a quella impostata in fase di richiesta salvataggio del file");
64
+ } else {
65
+ logger.debug("SecretKey verificata correttamente");
66
+ }
67
+ }
68
+ }
69
+
5170 File file = new File(regDocument.getFilePath());
5271 FileInputStream fis = new FileInputStream(file);
5372 InputStreamResource isr = new InputStreamResource(fis);