Session idle timeout with logout implementation

This commit is contained in:
Jose Alberto Hernandez
2024-04-16 19:43:17 -06:00
committed by Jose Alberto Hernandez
parent caf3d39719
commit 29d3d08e88
28 changed files with 189 additions and 6 deletions
+19 -1
View File
@@ -3,6 +3,7 @@ import { Component, OnInit, HostListener, HostBinding } from '@angular/core';
import { Router, NavigationEnd, ActivatedRoute } from '@angular/router';
import { Title } from '@angular/platform-browser';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatDialog } from '@angular/material/dialog';
/** rxjs Imports */
import { merge } from 'rxjs';
@@ -20,6 +21,8 @@ import { ThemeStorageService } from './shared/theme-picker/theme-storage.service
import { AlertService } from './core/alert/alert.service';
import { AuthenticationService } from './core/authentication/authentication.service';
import { SettingsService } from './settings/settings.service';
import { IdleTimeoutService } from './home/timeout-dialog/idle-timeout.service';
import { SessionTimeoutDialogComponent } from './home/timeout-dialog/session-timeout-dialog.component';
/** Custom Items */
import { Alert } from './core/alert/alert.model';
@@ -95,6 +98,8 @@ export class WebAppComponent implements OnInit {
* @param {SettingsService} settingsService Settings Service.
* @param {AuthenticationService} authenticationService Authentication service.
* @param {Dates} dateUtils Dates service.
* @param {IdleTimeoutService} idle Idle timeout service.
* @param {MatDialog} dialog Dialog component.
*/
constructor(private router: Router,
private activatedRoute: ActivatedRoute,
@@ -106,7 +111,9 @@ export class WebAppComponent implements OnInit {
private settingsService: SettingsService,
private authenticationService: AuthenticationService,
private themingService: ThemingService,
private dateUtils: Dates) { }
private dateUtils: Dates,
private idle: IdleTimeoutService,
private dialog: MatDialog) { }
@HostBinding('class') public cssClass: string;
@@ -210,6 +217,17 @@ export class WebAppComponent implements OnInit {
this.settingsService.setTenantIdentifier(environment.fineractPlatformTenantId || 'default');
}
this.settingsService.setTenantIdentifiers(environment.fineractPlatformTenantIds.split(','));
// Subscribe to session timeout If IdleTimeout is higher than 0 (zero)
if (environment.session.timeout.idleTimeout > 0) {
this.idle.$onSessionTimeout.subscribe(() => {
if (this.authenticationService.getUserLoggedIn()) {
this.alertService.alert({type: 'Session timeout', message: this.translateService.instant('labels.text.Session timed out')});
this.dialog.open(SessionTimeoutDialogComponent);
this.logout();
}
});
}
}
logout() {