import { Injectable } from '@angular/core'; import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, } from '@angular/common/http'; import { Observable, throwError } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { AuthService } from '../services/auth.service'; import { environment } from '../../../environments/environment'; import { Router } from '@angular/router'; @Injectable() export class UnauthorizedInterceptor implements HttpInterceptor { constructor(private authService: AuthService, private router: Router) {} intercept( request: HttpRequest, next: HttpHandler ): Observable> { return next.handle(request).pipe( catchError((err) => { if (err.status === 401) { this.authService.clearLocalStorage(); this.router.navigate(['login'], { queryParams: { returnUrl: this.router.routerState.snapshot.url }, }); } if (!environment.production) { console.error(err); } const error = (err && err.error && err.error.message) || err.statusText; return throwError(error); }) ); } }