From 53a7c0e6d924391335d09032bd51f50c8a2ba74d Mon Sep 17 00:00:00 2001
From: RIHTARSIC Joze <joze.rihtarsic@ext.ec.europa.eu>
Date: Mon, 23 Sep 2024 12:06:49 +0200
Subject: [PATCH] [EDELIVERY-13756] UI - add missing expired session alert

---
 smp-angular/src/app/http/http-session-interceptor.ts | 6 +++++-
 smp-angular/src/assets/i18n/en.json                  | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/smp-angular/src/app/http/http-session-interceptor.ts b/smp-angular/src/app/http/http-session-interceptor.ts
index d3cd24c4f..2e6a7f1cd 100644
--- a/smp-angular/src/app/http/http-session-interceptor.ts
+++ b/smp-angular/src/app/http/http-session-interceptor.ts
@@ -7,6 +7,7 @@ import {MatDialog} from "@angular/material/dialog";
 import {
   SessionExpirationDialogComponent
 } from "../common/dialogs/session-expiration-dialog/session-expiration-dialog.component";
+import {TranslateService} from "@ngx-translate/core";
 
 /*
  * A custom interceptor that handles session expiration before it happens.
@@ -26,6 +27,8 @@ export class HttpSessionInterceptor implements HttpInterceptor {
   private timerToLogoutId: number;
 
   constructor(public securityService: SecurityService,
+              private alertService: AlertMessageService,
+              private translateService: TranslateService,
               private dialog: MatDialog) {
   }
 
@@ -33,7 +36,7 @@ export class HttpSessionInterceptor implements HttpInterceptor {
     clearTimeout(this.timerId);
     clearTimeout(this.timerToLogoutId);
     let user = this.securityService.getCurrentUser();
-    if (user && user.sessionMaxIntervalTimeoutInSeconds && user.sessionMaxIntervalTimeoutInSeconds > this.TIME_BEFORE_EXPIRATION_IN_SECONDS) {
+    if (user?.sessionMaxIntervalTimeoutInSeconds && user.sessionMaxIntervalTimeoutInSeconds > this.TIME_BEFORE_EXPIRATION_IN_SECONDS) {
       let timeout = Math.min((user.sessionMaxIntervalTimeoutInSeconds - this.TIME_BEFORE_EXPIRATION_IN_SECONDS) * 1000, this.MAXIMUM_TIMEOUT_VALUE);
       this.timerId = setTimeout(() => this.sessionExpiringSoon(user.sessionMaxIntervalTimeoutInSeconds), timeout);
     }
@@ -44,6 +47,7 @@ export class HttpSessionInterceptor implements HttpInterceptor {
     // Logout the user after the session expires
     this.timerToLogoutId = setTimeout(() => {
       this.securityService.logout();
+      this.alertService.errorForTranslation("session.alert.message.logout.expired", true);
     }, this.TIME_BEFORE_EXPIRATION_IN_SECONDS * 1000);
 
     this.dialog.open(SessionExpirationDialogComponent, {
diff --git a/smp-angular/src/assets/i18n/en.json b/smp-angular/src/assets/i18n/en.json
index cf3fc495f..38db15b9a 100644
--- a/smp-angular/src/assets/i18n/en.json
+++ b/smp-angular/src/assets/i18n/en.json
@@ -93,6 +93,7 @@
   "session.expiration.dialog.button.logout": "Logout",
   "session.expiration.dialog.title": "Extend session",
   "session.expiration.dialog.label.session.about.to.expire": "Your session is about to expire in <b>{{timeLeft}}</b> seconds!<br />Would you like to logout now or extend it for another <b>{{timeout}}</b> seconds?",
+  "session.alert.message.logout.expired": "Your session has expired, and you have been logged out",
   "alert.panel.title": "Alerts",
   "alert.panel.user.title": "{{value}} (Email: '{{mailTo}}')",
   "certificate.panel.title": "Selected certificate data",
-- 
GitLab