abstruse
Version:
Abstruse CI
65 lines (54 loc) • 1.64 kB
text/typescript
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';
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
};