src/app/providers/stores/session.store.ts
Properties |
Methods |
constructor(storage: StorageService, helper: JwtHelperService)
|
|||||||||
Defined in src/app/providers/stores/session.store.ts:15
|
|||||||||
Parameters :
|
clearSession |
clearSession()
|
Defined in src/app/providers/stores/session.store.ts:47
|
Returns :
void
|
createSession | ||||||
createSession(jwt: IJwt)
|
||||||
Defined in src/app/providers/stores/session.store.ts:43
|
||||||
Parameters :
Returns :
void
|
Private trySessionFromJwt |
trySessionFromJwt()
|
Defined in src/app/providers/stores/session.store.ts:30
|
Returns :
void
|
Private headers |
headers:
|
Type : HttpHeaders
|
Defined in src/app/providers/stores/session.store.ts:13
|
Private session |
session:
|
Type : BehaviorSubject<Session>
|
Defined in src/app/providers/stores/session.store.ts:12
|
Public session$ |
session$:
|
Type : Observable<Session>
|
Defined in src/app/providers/stores/session.store.ts:15
|
import { HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { JwtHelperService } from '@auth0/angular-jwt';
import { JWT_KEY } from '../../app.constants';
import { IJwt } from '../../models/i-jwt';
import { Session } from '../../models/session';
import { StorageService } from '../services/storage.service';
import { BehaviorSubject, Observable } from 'rxjs';
@Injectable()
export class SessionStore {
private session: BehaviorSubject<Session>;
private headers: HttpHeaders;
public session$: Observable<Session>;
constructor(
private storage: StorageService,
private helper: JwtHelperService
) {
this.headers = new HttpHeaders();
this.headers.append('Cache-control', 'no-cache');
this.headers.append('Pragma', 'no-cache');
this.headers.append('Expires', '0');
this.session = new BehaviorSubject<Session>(new Session());
this.session$ = this.session.asObservable();
this.trySessionFromJwt();
}
private trySessionFromJwt() {
try {
const rawToken = this.storage.get(JWT_KEY);
if (rawToken && this.helper.isTokenExpired(rawToken)) {
return;
}
const jwt = this.helper.decodeToken(rawToken) as IJwt;
this.createSession(jwt);
} catch (error) {
console.log(error);
}
}
createSession(jwt: IJwt): void {
this.session.next(new Session(jwt));
}
clearSession(): void {
this.session.next(new Session());
}
}