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

108 lines
2.0 KiB
TypeScript

import { Injectable, Inject} from '@angular/core';
import { Observable } from 'rxjs';
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 (@Inject(DOCUMENT) private document) {
var csrfToken : string = jQuery(document).find('meta[name="csrf-token"]').attr('content');
this.setCSRFToken(csrfToken);
}
getCSRFToken() : string{
return localStorage.retrieve('csrf-token');
}
setCSRFToken(csrfToken : string){
localStorage.store('csrf-token',csrfToken);
}
getProvider() : TokenProvider {
return localStorage.retrieve('provider');
}
setProvider(provider : TokenProvider){
localStorage.store('provider',provider);
}
getToken() : string{
return localStorage.retrieve('token');
}
setToken(token : string){
localStorage.store('token',token);
}
isLoggedIn(){
return localStorage.retrieve('loggedIn');
}
setLoggedIn(boolStatus){
localStorage.store('loggedIn',boolStatus);
}
getEmail(){
return localStorage.retrieve('email');
}
setEmail(email){
localStorage.store('email',email);
}
getUsername(){
return localStorage.retrieve('username');
}
setUsername(username){
localStorage.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);
}
}
export enum TokenProvider {
native,
google
}