Skip to content

ambati-karvy/angular-implicity-login

Repository files navigation

import { Injectable, Injector } from '@angular/core'; import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse, HttpClient } from '@angular/common/http'; import { environment } from '../../../environments/environment'; import { Observable } from 'rxjs/Rx';

@Injectable() export class RefreshTokenInterceptor implements HttpInterceptor {

constructor(private injector: Injector) {}

intercept(request: HttpRequest, next: HttpHandler): Observable<HttpEvent> {

return next.handle(request).catch((errorResponse: HttpErrorResponse) => {
  const error = (typeof errorResponse.error !== 'object') ? JSON.parse(errorResponse.error) : errorResponse;

  if (errorResponse.status === 401 && error.error === 'token_expired') {
    const http = this.injector.get(HttpClient);

    return http.post<any>(`${environment.baseUrl}/auth/refresh`, {})
      .flatMap(data => {
        sessionStorage.setItem('token', data.token);
        const cloneRequest = request.clone({setHeaders: {'Authorization': `Bearer ${data.token}`}});

        return next.handle(cloneRequest);
      });
  }

  return Observable.throw(errorResponse);
});

} }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors