Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Injectable } from '@angular/core';
- import {AuthUser} from './user.service';
- import { Subject } from 'rxjs/Subject';
- import { Router } from '@angular/router';
- @Injectable()
- export class AuthService {
- public UserLoggedInSubject:Subject<AuthUser>;
- public logoutTime = 15;//15 minutes
- public logoutDialogShown:boolean;
- constructor(private router:Router) {
- this.UserLoggedInSubject = new Subject<AuthUser>();
- this.logoutDialogShown = false;
- }
- public login(authUser:AuthUser):AuthUser{
- this.storeUser(authUser);
- this.UserLoggedInSubject.next(authUser);
- this.logoutDialogShown = false;
- return this.getStoredUser();
- }
- public logout(redirectToLogin=true){
- if(typeof window.localStorage.user != 'undefined' && window.localStorage.user != null){
- window.localStorage.user = null;
- this.UserLoggedInSubject.next(null);
- if(this.logoutDialogShown == false){
- alert("You have been logged out");
- if(redirectToLogin ){
- this.router.navigateByUrl("/login");
- }
- this.logoutDialogShown = true;
- }
- }
- }
- private storeUser(authUser:AuthUser){
- window.localStorage.user = JSON.stringify(authUser);
- }
- public getStoredUser():AuthUser{
- if(typeof window.localStorage.user != 'undefined' && window.localStorage.user != null && window.localStorage.user != 'null'){
- let parsedUser = JSON.parse(window.localStorage.user);
- let tokenLifeSpan = this.addMinutes(new Date(parsedUser.token_creation_time*1000),this.logoutTime);
- let currentTime = new Date();
- if(currentTime < tokenLifeSpan){
- return parsedUser;
- }
- }
- this.logout();
- return null;
- }
- private addMinutes(date:Date, minutes:number) :Date{
- return new Date(date.getTime() + minutes*60000);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement