Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Injectable, Injector } from '@angular/core';
- import { AuthenticationService } from '../services/authentication.service';
- import { MessagesService } from '../services/messages.service';
- import * as moment from 'moment';
- @Injectable()
- export class SessionTimer {
- private intervalID: any;
- private interval: number;
- constructor(private injector: Injector) {
- this.interval = 600000; // 30 minutes session are 1 800 000 milliseconds
- }
- public startTimer(): void {
- console.log('Timer start. Next session out at ' + moment().add(10, 'minutes').format('HH:mm:ss'));
- this.intervalID = setInterval(() => {
- this.onSessionEnd();
- }, this.interval);
- }
- public resetTimer(): void {
- console.log('Timer reset at ' + moment().format('HH:mm'));
- this.stopTimer();
- this.startTimer();
- }
- public stopTimer(): void {
- clearInterval(this.intervalID);
- }
- private onSessionEnd(): void {
- let authService = this.authService;
- this.resetTimer();
- if (authService.getAccessToken() !== null) {
- authService.logout({
- onSuccess: () => {
- this.messagesService.setWarningMessage(['Your session has expired. Please log in again.']);
- authService.clearSession();
- }
- })
- }
- }
- private get authService(): AuthenticationService {
- return this.injector.get(AuthenticationService);
- }
- private get messagesService(): MessagesService {
- return this.injector.get(MessagesService);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement