1
|
import {Injectable} from '@angular/core';
|
2
|
import {HttpClient, HttpResponse} from '@angular/common/http';
|
3
|
import {Observable, of, pipe} from 'rxjs';
|
4
|
import {catchError, mapTo, tap} from 'rxjs/operators';
|
5
|
import {Router} from '@angular/router';
|
6
|
import {CookieService} from 'ngx-cookie-service';
|
7
|
import {UserState} from '../states/user.state';
|
8
|
import {LoginService} from '../../shared/api/endpoints/services/login.service';
|
9
|
import {UserInfo} from '../../shared/api/endpoints/models/user-info';
|
10
|
import {Group} from '../../shared/api/endpoints/models/group';
|
11
|
|
12
|
@Injectable({
|
13
|
providedIn: 'root'
|
14
|
})
|
15
|
export class AuthService {
|
16
|
|
17
|
constructor(
|
18
|
private http: HttpClient,
|
19
|
private userState: UserState,
|
20
|
private router: Router,
|
21
|
private cookieService: CookieService,
|
22
|
private loginService: LoginService
|
23
|
) {
|
24
|
}
|
25
|
|
26
|
doLogin(loginInput): Observable<boolean> {
|
27
|
return this.loginService.login$Response(loginInput)
|
28
|
.pipe(
|
29
|
tap((userInfo: HttpResponse<UserInfo>) => this.setUserFromResponse(userInfo.body, loginInput)),
|
30
|
mapTo(true),
|
31
|
catchError(() => {
|
32
|
return of<boolean>(false);
|
33
|
})
|
34
|
);
|
35
|
}
|
36
|
|
37
|
getUserState(): Observable<UserInfo> {
|
38
|
return this.userState.getUser$();
|
39
|
}
|
40
|
|
41
|
getIsLoggedIn(): boolean {
|
42
|
return this.userState.getLoggedIn();
|
43
|
}
|
44
|
|
45
|
setUserFromResponse(userInfo: UserInfo, loginInput): UserInfo {
|
46
|
this.userState.setUser(userInfo);
|
47
|
this.userState.setLoggedIn(true);
|
48
|
sessionStorage.setItem('userName', loginInput.username)
|
49
|
sessionStorage.setItem('sessionid', userInfo.sessionid)
|
50
|
sessionStorage.setItem('language', userInfo.language)
|
51
|
sessionStorage.setItem('audio', String(userInfo.audio))
|
52
|
this.cookieService.set('userName', loginInput.username)
|
53
|
return userInfo;
|
54
|
}
|
55
|
|
56
|
doLogout() {
|
57
|
this.cookieService.deleteAll();
|
58
|
}
|
59
|
|
60
|
getUserRoles(): Group[] {
|
61
|
return this.userState.getUserGroups();
|
62
|
}
|
63
|
}
|