Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Injectable } from '@angular/core';
  2. import {AuthUser} from './user.service';
  3. import { Subject } from 'rxjs/Subject';
  4. import { Router } from '@angular/router';
  5.  
  6. @Injectable()
  7. export class AuthService {
  8.  
  9.   public UserLoggedInSubject:Subject<AuthUser>;
  10.   public logoutTime = 15;//15 minutes
  11.   public logoutDialogShown:boolean;
  12.  
  13.   constructor(private router:Router) {
  14.     this.UserLoggedInSubject = new Subject<AuthUser>();
  15.     this.logoutDialogShown = false;
  16.   }
  17.  
  18.   public login(authUser:AuthUser):AuthUser{
  19.     this.storeUser(authUser);
  20.     this.UserLoggedInSubject.next(authUser);
  21.     this.logoutDialogShown = false;
  22.     return this.getStoredUser();
  23.   }
  24.  
  25.   public logout(redirectToLogin=true){
  26.     if(typeof window.localStorage.user != 'undefined' && window.localStorage.user != null){
  27.       window.localStorage.user = null;
  28.       this.UserLoggedInSubject.next(null);
  29.       if(this.logoutDialogShown == false){
  30.         alert("You have been logged out");
  31.         if(redirectToLogin ){
  32.           this.router.navigateByUrl("/login");
  33.         }
  34.         this.logoutDialogShown = true;
  35.       }
  36.      
  37.     }
  38.   }
  39.  
  40.   private storeUser(authUser:AuthUser){
  41.     window.localStorage.user = JSON.stringify(authUser);
  42.   }
  43.  
  44.   public getStoredUser():AuthUser{
  45.     if(typeof window.localStorage.user != 'undefined' && window.localStorage.user != null && window.localStorage.user != 'null'){
  46.       let parsedUser    =   JSON.parse(window.localStorage.user);
  47.       let tokenLifeSpan =   this.addMinutes(new Date(parsedUser.token_creation_time*1000),this.logoutTime);
  48.       let currentTime   =   new Date();
  49.       if(currentTime < tokenLifeSpan){
  50.         return parsedUser;
  51.       }
  52.     }
  53.     this.logout();
  54.     return null;
  55.   }
  56.  
  57.   private addMinutes(date:Date, minutes:number) :Date{
  58.     return new Date(date.getTime() + minutes*60000);
  59.   }
  60.  
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement