]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/blob
83e1664643bd386874fa615b62e302a6e18b30e0
[ceph-ci.git] /
1 import { Component, OnDestroy, OnInit } from '@angular/core';
2
3 import { SettingsService } from '../../api/settings.service';
4 import { CdPwdExpirationSettings } from '../../models/cd-pwd-expiration-settings';
5 import { AuthStorageService } from '../../services/auth-storage.service';
6
7 @Component({
8   selector: 'cd-pwd-expiration-notification',
9   templateUrl: './pwd-expiration-notification.component.html',
10   styleUrls: ['./pwd-expiration-notification.component.scss']
11 })
12 export class PwdExpirationNotificationComponent implements OnInit, OnDestroy {
13   alertType: string;
14   expirationDays: number;
15   pwdExpirationSettings: CdPwdExpirationSettings;
16   displayNotification = false;
17
18   constructor(
19     private settingsService: SettingsService,
20     private authStorageService: AuthStorageService
21   ) {}
22
23   ngOnInit() {
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';
31         } else {
32           this.alertType = 'warning';
33         }
34         this.displayNotification = true;
35         this.authStorageService.isPwdDisplayedSource.next(true);
36       }
37     });
38   }
39
40   ngOnDestroy() {
41     this.authStorageService.isPwdDisplayedSource.next(false);
42   }
43
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));
48   }
49
50   close() {
51     this.authStorageService.isPwdDisplayedSource.next(false);
52     this.displayNotification = false;
53   }
54 }