From 1394b4757112bde2b2b1f3e98505323c3af8f860 Mon Sep 17 00:00:00 2001
From: RIHTARSIC Joze <joze.rihtarsic@ext.ec.europa.eu>
Date: Tue, 2 May 2023 15:59:06 +0200
Subject: [PATCH] Fix error message for expired certificates

---
 .../domain-panel/domain-panel.component.ts    |  2 +-
 .../smp/services/ui/UIUserService.java        |  5 ++++-
 .../smp/ui/external/UserController.java       | 20 +++++++++++++++----
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/smp-angular/src/app/system-settings/admin-domain/domain-panel/domain-panel.component.ts b/smp-angular/src/app/system-settings/admin-domain/domain-panel/domain-panel.component.ts
index 6d6735d2e..65230be8f 100644
--- a/smp-angular/src/app/system-settings/admin-domain/domain-panel/domain-panel.component.ts
+++ b/smp-angular/src/app/system-settings/admin-domain/domain-panel/domain-panel.component.ts
@@ -1,4 +1,4 @@
-import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild,} from '@angular/core';
+import {Component, ElementRef, EventEmitter, Input, Output, ViewChild,} from '@angular/core';
 import {DomainRo} from "../../../common/model/domain-ro.model";
 import {AbstractControl, FormBuilder, FormControl, FormGroup, Validators} from "@angular/forms";
 import {AdminDomainService} from "../admin-domain.service";
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java
index 680b1d6f2..3a5e71bc0 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java
@@ -181,6 +181,7 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> {
             throw new SMPRuntimeException(ErrorCode.INVALID_REQUEST, "CertificateCredentials", "Certificate is not given for certificate credential!");
         }
 
+
         DBCredential dbCredential = conversionService.convert(credential, DBCredential.class);
         dbCredential.setCredentialType(CredentialType.CERTIFICATE);
         dbCredential.setCredentialTarget(CredentialTargetType.REST_API);
@@ -197,8 +198,9 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> {
         dbCredential.setCertificate(dbCertificate);
         credentialDao.persistFlushDetach(dbCredential);
 
+
         CredentialRO result = conversionService.convert(dbCredential, CredentialRO.class);
-        CertificateRO resultCertificate = conversionService.convert(dbCredential.getCertificate(), CertificateRO.class);
+        CertificateRO resultCertificate = truststoreService.getCertificateData(dbCertificate.getPemEncoding(), true, false);
         result.setCertificate(resultCertificate);
         result.setStatus(EntityROStatus.NEW.getStatusNumber());
         return result;
@@ -453,6 +455,7 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> {
         credentialDao.remove(credential);
         CredentialRO credentialRO = conversionService.convert(credential, CredentialRO.class);
         credentialRO.setStatus(EntityROStatus.REMOVE.getStatusNumber());
+
         return credentialRO;
     }
 
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java
index 6880802b4..99f0440da 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java
@@ -146,8 +146,11 @@ public class UserController {
         Long accessTokenId = decryptEntityId(encAccessTokenId);
 
         // delete user credential
-        return uiUserService.deleteUserCredentials(userId,
+        CredentialRO result =  uiUserService.deleteUserCredentials(userId,
                 accessTokenId, CredentialType.ACCESS_TOKEN, CredentialTargetType.REST_API);
+        // set the same encrypted id so that UI can locate and update it
+        result.setCredentialId(encAccessTokenId);
+        return result;
     }
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
@@ -160,11 +163,14 @@ public class UserController {
         Long accessTokenId = decryptEntityId(encAccessTokenId);
 
         // delete user credential
-        return uiUserService.updateUserCredentials(userId,
+        CredentialRO result =  uiUserService.updateUserCredentials(userId,
                 accessTokenId,
                 CredentialType.ACCESS_TOKEN,
                 CredentialTargetType.REST_API,
                 credentialRO);
+        // set the same encrypted credential id so that UI can remove it from the list
+        result.setCredentialId(encAccessTokenId);
+        return result;
     }
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
@@ -195,8 +201,11 @@ public class UserController {
         Long userId = decryptEntityId(encUserId);
         Long credentialId = decryptEntityId(encCredentialId);
         // delete user credential
-        return uiUserService.deleteUserCredentials(userId,
+        CredentialRO result =  uiUserService.deleteUserCredentials(userId,
                 credentialId, CredentialType.CERTIFICATE, CredentialTargetType.REST_API);
+        // set the same encrypted credential id so that UI can remove it from the list
+        result.setCredentialId(encCredentialId);
+        return result;
     }
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
@@ -208,11 +217,14 @@ public class UserController {
         Long userId = decryptEntityId(encUserId);
         Long credentialId = decryptEntityId(encCredentialId);
         // delete user credential
-        return uiUserService.updateUserCredentials(userId,
+        CredentialRO result =  uiUserService.updateUserCredentials(userId,
                 credentialId,
                 CredentialType.CERTIFICATE,
                 CredentialTargetType.REST_API,
                 credentialRO);
+        // set the same encrypted credential id so that UI can update it
+        result.setCredentialId(encCredentialId);
+        return result;
     }
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
-- 
GitLab