src/app/providers/interceptors/auth.interceptor.ts
Methods |
constructor(injector: Injector)
|
||||||
Parameters :
|
intercept | |||||||||
intercept(request: HttpRequest
|
|||||||||
Parameters :
Returns :
Observable<HttpEvent<any>>
|
import {
HttpErrorResponse,
HttpEvent,
HttpHandler,
HttpInterceptor,
HttpRequest,
HttpResponse
} from '@angular/common/http';
import { Injectable, Injector } from '@angular/core';
import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';
import { AuthService } from '../services/auth.service';
import { LogService } from '../services/log.service';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private injector: Injector) {}
intercept(
request: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
const auth = this.injector.get(AuthService);
const logger = this.injector.get(LogService);
request = request.clone({
setHeaders: {
Authorization: `Bearer ${auth.getToken()}`,
'Cache-Control': 'no-cache', // HTTP 1.1
Pragma: 'no-cache', // HTTP 1.0
Expires: '-1' // Proxies
}
});
return next.handle(request).pipe(
tap(
(event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
logger.log(event);
}
},
(err: any) => {
if (err instanceof HttpErrorResponse) {
if (err.status === 401) {
logger.log(err);
auth.logout();
}
}
}
)
);
}
}