You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
aConnect-UX/src/app/services/auth.service.ts

90 lines
2.7 KiB
TypeScript

import { Injectable } from '@angular/core';
import { tap } from 'rxjs/operators';
import { HttpService } from '../shared/services/http.service';
import { MiscService } from '../shared/services/misc.service';
import { Router } from '@angular/router';
import { User } from '../models/user';
import { HttpErrorResponse } from '@angular/common/http';
import { CONSTANTS } from '../utils/app.constants';
import { StorageService } from '../shared/services/storage.service';
@Injectable({
providedIn: 'root'
})
export class AuthService {
constructor(private httpService: HttpService, private miscService: MiscService, private router: Router, private storageService: StorageService) { }
firstLogin: boolean = false;
private token: string = "";
async login(User_Data: User) {
let login = false;
let userId = User_Data.Username;
let password = User_Data.Password;
let data = { "userId": User_Data.Username, "userPassword": btoa(User_Data.Password) };
let url = '/loginUser';
let response: any = await this.httpService.postRequest(url, data)!.toPromise();
if (!(response instanceof HttpErrorResponse)) {
if ((await response["errorMessage"] == undefined)) {
if (response) {
login = true;
localStorage.setItem('USERKEY', userId);
let res = JSON.parse(JSON.stringify(response));
let permission = JSON.parse(res['userPermission']);
localStorage.setItem('SIDENAV', res['userPermission']);
this.firstLogin = res['firstLogin'];
localStorage.setItem('USERNAME', res['userName']);
localStorage.setItem('token', res['token'])
return res;
}
}
let res = response;
return res;
}
}
IsLoggedIn() {
if (this.storageService.getItem('USERKEY') !== null)
return true;
else
return false;
}
logout() {
window.history.state;
localStorage.clear();
this.router.navigate(['login'])
}
getToken(): string {
this.token = localStorage.getItem('token') || "";
return this.token;
}
setToken(token: string) {
this.token = token;
localStorage.setItem('token', token);
}
refreshToken() {
let uCreds = { token: this.getToken() };
let porOrgacode = CONSTANTS.POR_ORGACODE;
let refreshTokenData: any = {
cmpUserId: localStorage.getItem('USERKEY'),
token: uCreds.token,
porOrgacode: porOrgacode
}
return this.httpService.postRequest("/refreshToken", refreshTokenData)!.pipe(
tap((response: any) => {
localStorage.removeItem('token')
localStorage.setItem('token', JSON.stringify(response.token));
this.setToken(response.token);
})
);
}
}