From a81e22c083fb82bdf21713fb6f8e5adfd9b0638e Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 9 Nov 2021 11:52:19 +0200 Subject: [PATCH] handling for RED-2651 --- src/lib/common-ui.module.ts | 3 ++- .../full-page-error/full-page-error.component.html | 2 +- .../error/full-page-error/full-page-error.component.ts | 1 + src/lib/error/server-error-interceptor.ts | 10 +++++++++- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/lib/common-ui.module.ts b/src/lib/common-ui.module.ts index 8e22421..6f4ab09 100644 --- a/src/lib/common-ui.module.ts +++ b/src/lib/common-ui.module.ts @@ -28,6 +28,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; import { CapitalizePipe } from './utils/pipes/capitalize.pipe'; +import {KeycloakAngularModule} from 'keycloak-angular'; const matModules = [MatIconModule, MatProgressSpinnerModule, MatButtonModule, MatDialogModule]; const modules = [ @@ -55,7 +56,7 @@ const pipes = [SortByPipe, HumanizePipe, CapitalizePipe]; @NgModule({ declarations: [...components, ...pipes, LogPipe], - imports: [CommonModule, ...matModules, ...modules, FormsModule, ReactiveFormsModule], + imports: [CommonModule, ...matModules, ...modules, FormsModule, ReactiveFormsModule, KeycloakAngularModule], exports: [...components, ...pipes, ...modules, LogPipe], }) export class CommonUiModule {} diff --git a/src/lib/error/full-page-error/full-page-error.component.html b/src/lib/error/full-page-error/full-page-error.component.html index 1ffdcf7..a12c641 100644 --- a/src/lib/error/full-page-error/full-page-error.component.html +++ b/src/lib/error/full-page-error/full-page-error.component.html @@ -1,5 +1,5 @@ - +
diff --git a/src/lib/error/full-page-error/full-page-error.component.ts b/src/lib/error/full-page-error/full-page-error.component.ts index 8e65339..80c14e0 100644 --- a/src/lib/error/full-page-error/full-page-error.component.ts +++ b/src/lib/error/full-page-error/full-page-error.component.ts @@ -24,4 +24,5 @@ export class FullPageErrorComponent { reload(): void { window.location.reload(); } + } diff --git a/src/lib/error/server-error-interceptor.ts b/src/lib/error/server-error-interceptor.ts index 32b55e0..2c359a4 100644 --- a/src/lib/error/server-error-interceptor.ts +++ b/src/lib/error/server-error-interceptor.ts @@ -4,6 +4,7 @@ import { MonoTypeOperatorFunction, Observable, throwError, timer } from 'rxjs'; import { catchError, mergeMap, retryWhen, tap } from 'rxjs/operators'; import { MAX_RETRIES_ON_SERVER_ERROR } from './max-retries.token'; import { ErrorService } from './error.service'; +import { KeycloakService } from 'keycloak-angular'; function updateSeconds(seconds: number) { if (seconds === 0 || seconds === 1) { @@ -35,12 +36,19 @@ function backoffOnServerError(maxRetries = 3): MonoTypeOperatorFunction, next: HttpHandler): Observable> { return next.handle(req).pipe( catchError((error: HttpErrorResponse) => { + // token expired + if (error.status === 403) { + this._keycloakService.logout(); + } + // server error if (error.status >= 500 || error.status === 0) { this._errorService.set(error); }