Leonardo Vannucci
2018-08-06 2e41678d03a4fd4c79173651a546c3e0c4fb0148
Aggiunta proprieta secret key per implementazione PIN opzionale
6 files modified
45 ■■■■■ changed files
dg1cloud-core/src/main/java/db/migration/V0.1__DG1CLOUD.sql 1 ●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/DownloadFileController.java 21 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/model/RegDocument.java 11 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/pojo/UploadedFileDescriptor.java 7 ●●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java 1 ●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/it/digione/dg1cloud/service/Utils.java 4 ●●●● patch | view | raw | blame | history
dg1cloud-core/src/main/java/db/migration/V0.1__DG1CLOUD.sql
....@@ -11,6 +11,7 @@
1111 file_path text NOT NULL,
1212 file_size bigint,
1313 due_date date,
14
+ secret_key character varying(1024),
1415 CONSTRAINT reg_document_pkey PRIMARY KEY (document_id)
1516 )
1617 WITH (
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);
dg1cloud-core/src/main/java/it/digione/dg1cloud/model/RegDocument.java
....@@ -50,6 +50,9 @@
5050 @Column(name="due_date")
5151 private Date dueDate;
5252
53
+ @Column(name="secret_key")
54
+ private String secretKey;
55
+
5356 public RegDocument() {
5457 }
5558
....@@ -142,6 +145,14 @@
142145 this.dueDate = dueDate;
143146 }
144147
148
+ public String getSecretKey() {
149
+ return secretKey;
150
+ }
151
+
152
+ public void setSecretKey(String secretKey) {
153
+ this.secretKey = secretKey;
154
+ }
155
+
145156 @Override
146157 public String toString() {
147158 return "RegDocument [documentId=" + documentId + ", created=" + created + ", createdBy=" + createdBy
dg1cloud-core/src/main/java/it/digione/dg1cloud/pojo/UploadedFileDescriptor.java
....@@ -7,6 +7,7 @@
77 private String fileName;
88 private String sha256;
99 private Date dueDate; //Data nel formato ISO-8601 - es: 2018-07-27T18:25:43.511Z
10
+ private String secretKey;
1011
1112 public String getFileName() {
1213 return fileName;
....@@ -26,4 +27,10 @@
2627 public void setDueDate(Date dueDate) {
2728 this.dueDate = dueDate;
2829 }
30
+ public String getSecretKey() {
31
+ return secretKey;
32
+ }
33
+ public void setSecretKey(String secretKey) {
34
+ this.secretKey = secretKey;
35
+ }
2936 }
dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java
....@@ -179,6 +179,7 @@
179179 regDocument.setFileSize(uploadedFile.length());
180180 regDocument.setDueDate(uploadedFileDescriptor.getDueDate());
181181 regDocument.setFilePath("");
182
+ regDocument.setSecretKey(uploadedFileDescriptor.getSecretKey());
182183
183184 regDocumentRepository.save(regDocument);
184185
dg1cloud-core/src/main/java/it/digione/dg1cloud/service/Utils.java
....@@ -6,6 +6,7 @@
66 import java.net.URL;
77
88 import org.apache.commons.io.FileUtils;
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;
....@@ -29,6 +30,9 @@
2930 uriBuilder.path("/downloadFile");
3031 uriBuilder.queryParam("fileName", regDocument.getFileName());
3132 uriBuilder.queryParam("id", regDocument.getDocumentId());
33
+ if ( Strings.isEmpty(regDocument.getSecretKey()) == false ) {
34
+ uriBuilder.queryParam("secretKey", regDocument.getSecretKey());
35
+ }
3236 return uriBuilder.build().toURL();
3337 }
3438