Merge in TEA/mina-sidor-fa-web from feature/TV-595-ciam-login-page to develop Squashed commit of the following: commit 7796cbc958bfb14dccb6cfc329fb223b66643af1 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Nov 17 09:46:47 2021 +0100 Using guard to check if user is logged in commit 43b9fca3d0d640b5c9711ec9837222ac2df5c782 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Nov 17 08:32:10 2021 +0100 Added link-button as logout link to my account commit ab40fae0d4741ee30af146a41ce254c6c7f6658a Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Nov 17 08:25:04 2021 +0100 Refactored authentication a bit commit d1c75864f2a0b1867b372655e81e37b28a067503 Merge: 45f350888f05343eAuthor: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Nov 17 07:04:32 2021 +0100 Merge branch 'develop' into feature/TV-595-ciam-login-page commit 45f3508811de2842af1c095ff72949b619d5bc8d Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Tue Nov 16 16:28:44 2021 +0100 Added resolve to check if user already is logged in when navigating to login page commit 44b212fb1e0eab7fdb823a8f41ea0d780c920ee0 Merge: 56ed0e5754ac27efAuthor: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Tue Nov 16 13:58:58 2021 +0100 Merge branch 'develop' into feature/TV-595-ciam-login-page commit 56ed0e57fb3f19c4c41ec3fe676db41ed5831557 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Tue Nov 16 13:48:53 2021 +0100 Implemented custom login page commit 27a514758d73d685e80a37e490646a759783d1f5 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Tue Nov 16 11:51:57 2021 +0100 WIP
66 lines
2.3 KiB
TypeScript
66 lines
2.3 KiB
TypeScript
import { DOCUMENT } from '@angular/common';
|
|
import { ChangeDetectionStrategy, Component, HostListener, Inject } from '@angular/core';
|
|
import { Title } from '@angular/platform-browser';
|
|
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
|
import { APPLICATION_CLOSED_TIME_STAMP } from '@msfa-constants/local-storage-keys';
|
|
import { environment } from '@msfa-environment';
|
|
import { AuthenticationService } from '@msfa-services/api/authentication.service';
|
|
import { IdleService } from '@msfa-services/idle.service';
|
|
import { Observable } from 'rxjs';
|
|
import { filter, map, switchMap } from 'rxjs/operators';
|
|
|
|
@Component({
|
|
selector: 'msfa-root',
|
|
templateUrl: './app.component.html',
|
|
styleUrls: ['./app.component.scss'],
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
})
|
|
export class AppComponent {
|
|
userIsIdle$: Observable<boolean> = this.idleService.isIdle$;
|
|
timeLeftBeforeLogout$: Observable<string> = this.idleService.timeLeftBeforeLogout$;
|
|
|
|
// Saving latest activity timestamp when application is closed
|
|
// to avoid users be automatically logged in if user hasn't used the application for a while.
|
|
@HostListener('window:beforeunload')
|
|
saveApplicationClosedTimestamp(): void {
|
|
localStorage.setItem(APPLICATION_CLOSED_TIME_STAMP, new Date().getTime().toString());
|
|
}
|
|
|
|
constructor(
|
|
@Inject(DOCUMENT) private document: Document,
|
|
private router: Router,
|
|
private activatedRoute: ActivatedRoute,
|
|
private titleService: Title,
|
|
private idleService: IdleService,
|
|
private authenticationService: AuthenticationService
|
|
) {
|
|
this.document.body.dataset.version = environment.version;
|
|
|
|
this.router.events
|
|
.pipe(
|
|
filter(event => event instanceof NavigationEnd),
|
|
map(() => traverseUntilNoChildRoute(this.activatedRoute)),
|
|
switchMap((route: ActivatedRoute) => route.data)
|
|
)
|
|
.subscribe((routeData: { [title: string]: string }) => {
|
|
const pageTitle = routeData.title;
|
|
this.titleService.setTitle(`${pageTitle ? `${pageTitle} - ` : ''}Mina sidor för fristående aktörer`);
|
|
});
|
|
}
|
|
|
|
logout(): void {
|
|
this.authenticationService.logout();
|
|
}
|
|
|
|
setUserAsActive(): void {
|
|
this.idleService.setActive();
|
|
}
|
|
}
|
|
|
|
function traverseUntilNoChildRoute(route: ActivatedRoute): ActivatedRoute {
|
|
while (route.firstChild) {
|
|
route = route.firstChild;
|
|
}
|
|
return route;
|
|
}
|