diff --git a/Core/Core/ClientApp/src/app/helpers/jwt.interceptor.ts b/Core/Core/ClientApp/src/app/helpers/jwt.interceptor.ts index fb5daaa65bc5e50de2aa96f9148eb7e5e2b61066..8cfa91d699e758d469ef5c2ec4d78fbb330823f8 100644 --- a/Core/Core/ClientApp/src/app/helpers/jwt.interceptor.ts +++ b/Core/Core/ClientApp/src/app/helpers/jwt.interceptor.ts @@ -1,7 +1,8 @@ import { Injectable } from "@angular/core"; -import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from "@angular/common/http"; +import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from "@angular/common/http"; import { LoginService } from "../login/login.service"; -import { Observable } from "rxjs"; +import { Observable, throwError } from "rxjs"; +import { catchError } from 'rxjs/operators'; @Injectable({ providedIn: 'root' @@ -11,13 +12,34 @@ export class JwtInterceptor implements HttpInterceptor { constructor(private LoginService: LoginService) { } + private handleError(err: HttpErrorResponse): Observable<any> { + let errorMsg; + if (err.error instanceof Error) { + // A client-side or network error occurred. Handle it accordingly. + errorMsg = `An error occurred: ${err.error.message}`; + } else { + // The backend returned an unsuccessful response code. + // The response body may contain clues as to what went wrong, + errorMsg = `Backend returned code ${err.status}, body was: ${err.error}`; + } + if (err.status === 401) { + console.log("NeoprávnÄ›nĂ˝ pĹ™Ăstup, odhlašuji..."); + this.LoginService.logout(); + return new Observable(); + } + + console.log(errorMsg); + return throwError(err); + } + + intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { let currentuser = this.LoginService.IsLoggedIn; let token = localStorage.getItem('jwt'); if (currentuser && token !== undefined) - request = request.clone({ setHeaders: { Authorization: `Bearer ${token}`} }); + request = request.clone({ setHeaders: { Authorization: `Bearer ${token}` } }); - return next.handle(request); + return next.handle(request).pipe(catchError(x => this.handleError(x))); } }