Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Injectable, Injector } from '@angular/core';
  2. import { AuthenticationService } from '../services/authentication.service';
  3. import { MessagesService } from '../services/messages.service';
  4. import * as moment from 'moment';
  5.  
  6. @Injectable()
  7. export class SessionTimer {
  8.  
  9.     private intervalID: any;
  10.     private interval: number;
  11.  
  12.     constructor(private injector: Injector) {
  13.         this.interval = 600000; // 30 minutes session are 1 800 000 milliseconds
  14.     }
  15.  
  16.     public startTimer(): void {
  17.         console.log('Timer start. Next session out at ' + moment().add(10, 'minutes').format('HH:mm:ss'));
  18.         this.intervalID = setInterval(() => {
  19.             this.onSessionEnd();
  20.         }, this.interval);
  21.     }
  22.  
  23.     public resetTimer(): void {
  24.         console.log('Timer reset at ' + moment().format('HH:mm'));
  25.         this.stopTimer();
  26.         this.startTimer();
  27.     }
  28.  
  29.     public stopTimer(): void {
  30.         clearInterval(this.intervalID);
  31.     }
  32.  
  33.     private onSessionEnd(): void {
  34.         let authService = this.authService;
  35.         this.resetTimer();
  36.         if (authService.getAccessToken() !== null) {
  37.             authService.logout({
  38.                 onSuccess: () => {
  39.                     this.messagesService.setWarningMessage(['Your session has expired. Please log in again.']);
  40.                     authService.clearSession();
  41.                 }
  42.             })
  43.         }
  44.     }
  45.  
  46.     private get authService(): AuthenticationService {
  47.         return this.injector.get(AuthenticationService);
  48.     }
  49.  
  50.     private get messagesService(): MessagesService {
  51.         return this.injector.get(MessagesService);
  52.     }
  53.  
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement