111 lines
2.2 KiB
TypeScript
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
|
|
}
|