argos/dmp-frontend/src/app/services/login/token.service.ts

111 lines
2.2 KiB
TypeScript

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(){
//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
}