]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/pwd-expiration-notification/pwd-expiration-notification.component.ts
import quincy beta 17.1.0
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / components / pwd-expiration-notification / pwd-expiration-notification.component.ts
1 import { Component, OnDestroy, OnInit } from '@angular/core';
2
3 import { SettingsService } from '~/app/shared/api/settings.service';
4 import { CdPwdExpirationSettings } from '~/app/shared/models/cd-pwd-expiration-settings';
5 import { AuthStorageService } from '~/app/shared/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 =
35 this.expirationDays <= this.pwdExpirationSettings.pwdExpirationWarning1;
36 this.authStorageService.isPwdDisplayedSource.next(this.displayNotification);
37 }
38 });
39 }
40
41 ngOnDestroy() {
42 this.authStorageService.isPwdDisplayedSource.next(false);
43 }
44
45 private getExpirationDays(pwdExpirationDate: number): number {
46 const current = new Date();
47 const expiration = new Date(pwdExpirationDate * 1000);
48 return Math.floor((expiration.valueOf() - current.valueOf()) / (1000 * 3600 * 24));
49 }
50
51 onDismissed(): void {
52 this.authStorageService.isPwdDisplayedSource.next(false);
53 this.displayNotification = false;
54 }
55 }