1 import { Component, OnDestroy, OnInit } from '@angular/core';
3 import { SettingsService } from '../../api/settings.service';
4 import { CdPwdExpirationSettings } from '../../models/cd-pwd-expiration-settings';
5 import { AuthStorageService } from '../../services/auth-storage.service';
8 selector: 'cd-pwd-expiration-notification',
9 templateUrl: './pwd-expiration-notification.component.html',
10 styleUrls: ['./pwd-expiration-notification.component.scss']
12 export class PwdExpirationNotificationComponent implements OnInit, OnDestroy {
14 expirationDays: number;
15 pwdExpirationSettings: CdPwdExpirationSettings;
16 displayNotification = false;
19 private settingsService: SettingsService,
20 private authStorageService: AuthStorageService
24 this.settingsService.getStandardSettings().subscribe((pwdExpirationSettings) => {
25 this.pwdExpirationSettings = new CdPwdExpirationSettings(pwdExpirationSettings);
26 const pwdExpirationDate = this.authStorageService.getPwdExpirationDate();
27 if (pwdExpirationDate) {
28 this.expirationDays = this.getExpirationDays(pwdExpirationDate);
29 if (this.expirationDays <= this.pwdExpirationSettings.pwdExpirationWarning2) {
30 this.alertType = 'danger';
32 this.alertType = 'warning';
34 this.displayNotification = true;
35 this.authStorageService.isPwdDisplayedSource.next(true);
41 this.authStorageService.isPwdDisplayedSource.next(false);
44 private getExpirationDays(pwdExpirationDate: number): number {
45 const current = new Date();
46 const expiration = new Date(pwdExpirationDate * 1000);
47 return Math.floor((expiration.valueOf() - current.valueOf()) / (1000 * 3600 * 24));
51 this.authStorageService.isPwdDisplayedSource.next(false);
52 this.displayNotification = false;