import { Injectable, Inject} from '@angular/core'; import { Observable } from 'rxjs'; import {LocalStorageService} from 'ngx-webstorage'; import {Router} from '@angular/router'; import 'rxjs/add/operator/map'; import { DOCUMENT } from '@angular/platform-browser'; declare var jQuery : any; import '../../../assets/custom.js'; declare function sign_out_google(): any; @Injectable() export class TokenService { constructor (private storage : LocalStorageService, @Inject(DOCUMENT) private document, private router : Router) { //var csrfToken : string = jQuery(document).find('meta[name="csrf-token"]').attr('content'); //this.setCSRFToken(csrfToken); } /* getCSRFToken() : string{ return this.storage.retrieve('csrf-token'); } setCSRFToken(csrfToken : string){ this.storage.store('csrf-token',csrfToken); } */ getProvider() : TokenProvider { return this.storage.retrieve('provider'); } setProvider(provider : TokenProvider){ this.storage.store('provider',provider); } getToken() : string{ return this.storage.retrieve('token'); } setToken(token : string){ this.storage.store('token',token); } isLoggedIn(){ return this.storage.retrieve('loggedIn'); } setLoggedIn(boolStatus){ this.storage.store('loggedIn',boolStatus); } getEmail(){ return this.storage.retrieve('email'); } setEmail(email){ this.storage.store('email',email); } getUsername(){ return this.storage.retrieve('username'); } setUsername(username){ this.storage.store('username',username); } login(token: string, provider: TokenProvider, username: string, email: string){ this.setLoggedIn(true); this.setToken(token); this.setProvider(provider); this.setUsername(username); this.setEmail(email); window.location.reload(); } logout(){ debugger; //set the log out actions here this.setLoggedIn(false); this.setEmail(null); this.setUsername(null); this.setToken(null); if(this.getProvider() == TokenProvider.google){ sign_out_google(); } this.setProvider(null); this.router.navigate(['/login'], { queryParams: { /*returnUrl: this.state.url*/ }}); //window.location.reload(); } } export enum TokenProvider { native, google }