From 9e1765ef64c759546a49b7fc41cebbf42ec007a4 Mon Sep 17 00:00:00 2001 From: RIHTARSIC Joze <joze.rihtarsic@ext.ec.europa.eu> Date: Wed, 25 Sep 2024 10:38:10 +0200 Subject: [PATCH] [EDELIVERY-11391] fix duplicate import not working for truststore certificates --- .../admin-truststore/admin-truststore.component.html | 1 + .../admin-truststore/admin-truststore.component.ts | 6 ++++-- .../smp/ui/internal/TruststoreAdminController.java | 3 +-- 3 files changed, 6 insertions(+), 4 deletions(-) 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 83a5d4263..42a6b5075 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 8a864be5e..e9a197825 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 eede16b0a..b12f4eeee 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; } -- GitLab