|
@@ -1,9 +1,10 @@
|
|
|
import { Injectable } from '@angular/core';
|
|
import { Injectable } from '@angular/core';
|
|
|
|
|
+import { Router } from '@angular/router';
|
|
|
import { HttpClient } from '@angular/common/http';
|
|
import { HttpClient } from '@angular/common/http';
|
|
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
|
import { map } from 'rxjs/operators';
|
|
import { map } from 'rxjs/operators';
|
|
|
import { Environnement } from '../env';
|
|
import { Environnement } from '../env';
|
|
|
-import { User } from '../interfaces/user';
|
|
|
|
|
|
|
+import { User, RefreshToken } from '../interfaces/user';
|
|
|
import { Participant } from '../interfaces/participant';
|
|
import { Participant } from '../interfaces/participant';
|
|
|
|
|
|
|
|
@Injectable({ providedIn: 'root' })
|
|
@Injectable({ providedIn: 'root' })
|
|
@@ -19,7 +20,9 @@ export class AccountService
|
|
|
|
|
|
|
|
public user: Observable<User | null>;
|
|
public user: Observable<User | null>;
|
|
|
|
|
|
|
|
- constructor(private httpClient: HttpClient)
|
|
|
|
|
|
|
+ private refreshToken: RefreshToken = new RefreshToken();
|
|
|
|
|
+
|
|
|
|
|
+ constructor(private router : Router, private httpClient: HttpClient)
|
|
|
{
|
|
{
|
|
|
this.userSubject = new BehaviorSubject(JSON.parse(sessionStorage.getItem('user')!));
|
|
this.userSubject = new BehaviorSubject(JSON.parse(sessionStorage.getItem('user')!));
|
|
|
this.user = this.userSubject.asObservable();
|
|
this.user = this.userSubject.asObservable();
|
|
@@ -28,20 +31,35 @@ export class AccountService
|
|
|
public isLogged() { if (this.userSubject.value) { return true; } return false; }
|
|
public isLogged() { if (this.userSubject.value) { return true; } return false; }
|
|
|
public getUsername() { if (this.userSubject.value) { return this.userSubject.value.username; } return ""; }
|
|
public getUsername() { if (this.userSubject.value) { return this.userSubject.value.username; } return ""; }
|
|
|
public getRole() { if (this.userSubject.value) { return this.userSubject.value.role; } return ""; }
|
|
public getRole() { if (this.userSubject.value) { return this.userSubject.value.role; } return ""; }
|
|
|
- public getToken() { if (this.userSubject.value) { return this.userSubject.value.token; } return ""; }
|
|
|
|
|
|
|
+ public getAccessToken() { if (this.userSubject.value) { return this.userSubject.value.accessToken; } return ""; }
|
|
|
|
|
+ private getRefreshToken() { if (this.userSubject.value) { return this.userSubject.value.refreshToken; } return ""; }
|
|
|
|
|
|
|
|
signIn(usr: User): Observable<User>
|
|
signIn(usr: User): Observable<User>
|
|
|
{
|
|
{
|
|
|
return this.httpClient.post<User>(`${this.baseURLsig}/in`, usr).pipe(map(u => { sessionStorage.setItem('user', JSON.stringify(u)); this.userSubject.next(u); return u; }));
|
|
return this.httpClient.post<User>(`${this.baseURLsig}/in`, usr).pipe(map(u => { sessionStorage.setItem('user', JSON.stringify(u)); this.userSubject.next(u); return u; }));
|
|
|
}
|
|
}
|
|
|
|
|
+ updateToken()
|
|
|
|
|
+ {
|
|
|
|
|
+ this.refreshToken.accessToken = "";
|
|
|
|
|
+ this.refreshToken.refreshToken = this.getRefreshToken();
|
|
|
|
|
+
|
|
|
|
|
+ return this.httpClient.post<RefreshToken>(`${this.baseURLsig}/refresh`, this.refreshToken).pipe(map(u => { if ((u != null) && (this.userSubject.value != null)) { this.userSubject.value.accessToken = u.accessToken; } }));
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
signOut()
|
|
signOut()
|
|
|
{
|
|
{
|
|
|
- this.httpClient.post<User>(`${this.baseURLsig}/signout`, null);
|
|
|
|
|
|
|
+ this.httpClient.post<User>(`${this.baseURLsig}/out`, null);
|
|
|
|
|
|
|
|
sessionStorage.removeItem('user');
|
|
sessionStorage.removeItem('user');
|
|
|
this.userSubject.next(null);
|
|
this.userSubject.next(null);
|
|
|
}
|
|
}
|
|
|
|
|
+ silentOut()
|
|
|
|
|
+ {
|
|
|
|
|
+ sessionStorage.removeItem('user');
|
|
|
|
|
+ this.userSubject.next(null);
|
|
|
|
|
+
|
|
|
|
|
+ if ((this.router.url === '/') || (this.router.url === '/home')) { window.location.reload(); } else { this.router.navigate(['/']); }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
getListArrives(): Observable<User[]> { return this.httpClient.get<User[]>(`${this.baseURLsig}/list`); }
|
|
getListArrives(): Observable<User[]> { return this.httpClient.get<User[]>(`${this.baseURLsig}/list`); }
|
|
|
|
|
|