import { Injectable } from '@angular/core'; import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http'; import { Observable } from 'rxjs'; import { MessageService } from './message.service'; import { TokenService } from './token.service'; import { serviceBaseUrl } from './config'; @Injectable() export class AuthHandlerInterceptor implements HttpInterceptor { constructor(private tokenService: TokenService, private messageService: MessageService) {} intercept(request: HttpRequest, next: HttpHandler): Observable> { const token = localStorage.getItem(TokenService.Id_AuthToken_Key) if (request.url.includes(serviceBaseUrl) && token) { this.messageService.add("start refresh of tokens") this.tokenService.refresh() this.messageService.add("api request intercepted") const clone = request.clone({ setHeaders: { Authorization: `Bearer ${token}`} }) return next.handle(clone) } return next.handle(request); } }