]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/blob
c5392e3aaa919fe2925b25472b21b8dee4709eed
[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
17   constructor(
18     private settingsService: SettingsService,
19     private authStorageService: AuthStorageService
20   ) {}
21
22   ngOnInit() {
23     this.settingsService.getStandardSettings().subscribe((pwdExpirationSettings) => {
24       this.pwdExpirationSettings = new CdPwdExpirationSettings(pwdExpirationSettings);
25       const pwdExpirationDate = this.authStorageService.getPwdExpirationDate();
26       if (pwdExpirationDate) {
27         this.expirationDays = this.getExpirationDays(pwdExpirationDate);
28         if (this.expirationDays <= this.pwdExpirationSettings.pwdExpirationWarning2) {
29           this.alertType = 'danger';
30         } else {
31           this.alertType = 'warning';
32         }
33
34         this.authStorageService.isPwdDisplayedSource.next(true);
35       }
36     });
37   }
38
39   ngOnDestroy() {
40     this.authStorageService.isPwdDisplayedSource.next(false);
41   }
42
43   private getExpirationDays(pwdExpirationDate: number): number {
44     const current = new Date();
45     const expiration = new Date(pwdExpirationDate * 1000);
46     return Math.floor((expiration.valueOf() - current.valueOf()) / (1000 * 3600 * 24));
47   }
48
49   close() {
50     this.authStorageService.isPwdDisplayedSource.next(false);
51   }
52 }