File

src/app/providers/interceptors/auth.interceptor.ts

Index

Methods

Constructor

constructor(injector: Injector)
Parameters :
Name Type Optional
injector Injector No

Methods

intercept
intercept(request: HttpRequest, next: HttpHandler)
Parameters :
Name Type Optional
request HttpRequest<any> No
next HttpHandler No
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();
            }
          }
        }
      )
    );
  }
}

result-matching ""

    No results matching ""