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