diff --git a/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.html b/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.html index 83a5d4263a891edeb75e02f0c58ba2762a87469e..42a6b507503e5a89c06518a8548b0ea712ea311e 100644 --- a/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.html +++ b/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.html @@ -30,6 +30,7 @@ <mat-toolbar-row class="smp-toolbar-row"> <div class="custom-file-upload"> <input #fileInput type="file" id="custom-file-upload" accept=".cer,.crt,.pem,.der" + [(ngModel)]="inputFileValue" (change)="uploadCertificate($event)"> <button mat-raised-button mat-flat-button color="primary" (click)="fileInput.click()">{{ "admin.truststore.button.add.certificate" | translate }} diff --git a/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.ts b/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.ts index 8a864be5e12350cd3281d14ec9df074b3b526e10..e9a1978259719fb549a04f0af6d4096b4b791349 100644 --- a/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.ts +++ b/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.ts @@ -25,10 +25,11 @@ export class AdminTruststoreComponent implements OnInit, OnDestroy, AfterViewIn trustedCertificateList: CertificateRo[]; private updateTruststoreCertificatesSub: Subscription = Subscription.EMPTY; private updateTruststoreCertificateSub: Subscription = Subscription.EMPTY; + // purpose of this value is to reset the file input after the file is uploaded + inputFileValue: string = ''; @ViewChild(MatPaginator) paginator: MatPaginator; @ViewChild(MatSort) sort: MatSort; - constructor(private truststoreService: AdminTruststoreService, private alertService: AlertMessageService, private dialog: MatDialog, @@ -111,10 +112,11 @@ export class AdminTruststoreComponent implements OnInit, OnDestroy, AfterViewIn this.selected = selected; } - uploadCertificate(event) { const file = event.target.files[0]; this.truststoreService.uploadCertificate$(file); + // reset the file input + this.inputFileValue = ''; } async onDeleteSelectedCertificateClicked() { diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/TruststoreAdminController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/TruststoreAdminController.java index eede16b0ae84705a9af886e46a3482798f6b8090..b12f4eeee66fe6e1d130374ba0168daa88ad371a 100644 --- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/TruststoreAdminController.java +++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/TruststoreAdminController.java @@ -102,9 +102,8 @@ public class TruststoreAdminController { } catch (NoSuchAlgorithmException | KeyStoreException | IOException | CertificateException e) { String message = "Error occurred while storing the certificate!"; LOG.error(message, e); - creatEmptyResponse(null, EntityROStatus.ERROR, message); + return creatEmptyResponse(null, EntityROStatus.ERROR, message); } - return null; }