UNPKG

abstruse

Version:
65 lines (54 loc) 1.64 kB
import { Injectable, Provider, EventEmitter } from '@angular/core'; import { Router } from '@angular/router'; import { JwtHelperService } from '@auth0/angular-jwt'; import { ApiService } from './api.service'; import { SocketService } from './socket.service'; @Injectable() export class AuthService { jwtHelper: JwtHelperService; userEvents: EventEmitter<string>; loginRequired: boolean; constructor( private api: ApiService, private socket: SocketService, private router: Router ) { this.jwtHelper = new JwtHelperService(); this.userEvents = new EventEmitter<string>(); this.api.isAppReady().subscribe(ready => { if (!ready) { this.logout(); this.router.navigate(['/setup']); } }); } isLoggedIn(): boolean { return (localStorage.getItem('abs-token')) ? true : false; } login(jwt: string): void { localStorage.setItem('abs-token', jwt); this.userEvents.emit('login'); this.socket.emit({ type: 'login', data: localStorage.getItem('abs-token') }); } logout(): void { localStorage.removeItem('abs-token'); this.socket.emit({ type: 'userId', data: null }); this.socket.emit({ type: 'logout' }); } getData(): Object { if (this.isLoggedIn()) { return this.jwtHelper.decodeToken(localStorage.getItem('abs-token')); } else { return null; } } setLoginRequired(data: boolean): void { this.loginRequired = data; } addNewUser(user: any): any { return this.api.createUser(user).toPromise(); } } export const AuthServiceProvider: Provider = { provide: AuthService, useClass: AuthService };