]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/pwd-expiration-notification/pwd-expiration-notification.component.ts
import 15.2.5
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / components / pwd-expiration-notification / pwd-expiration-notification.component.ts
CommitLineData
f6b5b4d7 1import { Component, OnDestroy, OnInit } from '@angular/core';
9f95a23c
TL
2
3import { SettingsService } from '../../api/settings.service';
4import { CdPwdExpirationSettings } from '../../models/cd-pwd-expiration-settings';
5import { 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})
f6b5b4d7 12export class PwdExpirationNotificationComponent implements OnInit, OnDestroy {
9f95a23c
TL
13 alertType: string;
14 expirationDays: number;
15 pwdExpirationSettings: CdPwdExpirationSettings;
f6b5b4d7 16 displayNotification = false;
9f95a23c
TL
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 }
f6b5b4d7
TL
34 this.displayNotification =
35 this.expirationDays <= this.pwdExpirationSettings.pwdExpirationWarning1;
36 this.authStorageService.isPwdDisplayedSource.next(this.displayNotification);
9f95a23c
TL
37 }
38 });
39 }
40
f6b5b4d7
TL
41 ngOnDestroy() {
42 this.authStorageService.isPwdDisplayedSource.next(false);
43 }
44
9f95a23c
TL
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 close() {
52 this.authStorageService.isPwdDisplayedSource.next(false);
f6b5b4d7 53 this.displayNotification = false;
9f95a23c
TL
54 }
55}