diff --git a/npm/ng-packs/packages/theme-shared/src/lib/providers/error-handlers.provider.ts b/npm/ng-packs/packages/theme-shared/src/lib/providers/error-handlers.provider.ts index d456c82912..b0c3e693b9 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/providers/error-handlers.provider.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/providers/error-handlers.provider.ts @@ -4,6 +4,7 @@ import { TenantResolveErrorHandlerService } from '../services/tenant-resolve-err import { AbpFormatErrorHandlerService } from '../services/abp-format-error-handler.service'; import { StatusCodeErrorHandlerService } from '../services/status-code-error-handler.service'; import { UnknownStatusCodeErrorHandlerService } from '../services/unknown-status-code-error-handler.service'; +import { AbpSessionErrorHandlerService } from '../services/session-error-handler.service'; export const DEFAULT_HANDLERS_PROVIDERS: Provider[] = [ { @@ -26,4 +27,9 @@ export const DEFAULT_HANDLERS_PROVIDERS: Provider[] = [ multi: true, useExisting: UnknownStatusCodeErrorHandlerService, }, + { + provide: CUSTOM_ERROR_HANDLERS, + multi: true, + useExisting: AbpSessionErrorHandlerService, + }, ]; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/services/session-error-handler.service.ts b/npm/ng-packs/packages/theme-shared/src/lib/services/session-error-handler.service.ts new file mode 100644 index 0000000000..3ba7c7aa76 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/services/session-error-handler.service.ts @@ -0,0 +1,30 @@ +import { inject, Injectable } from '@angular/core'; +import { AuthService } from '@abp/ng.core'; +import { HttpErrorResponse } from '@angular/common/http'; +import { getErrorFromRequestBody } from '../utils/error.utils'; +import { CustomHttpErrorHandlerService } from '../models/common'; +import { ConfirmationService } from '../services/confirmation.service'; +import { CUSTOM_HTTP_ERROR_HANDLER_PRIORITY } from '../constants/default-errors'; + +@Injectable({ providedIn: 'root' }) +export class AbpSessionErrorHandlerService implements CustomHttpErrorHandlerService { + readonly priority = CUSTOM_HTTP_ERROR_HANDLER_PRIORITY.high; + private authService = inject(AuthService); + + canHandle(error: unknown): boolean { + console.log(error); + debugger; + if ( + error instanceof HttpErrorResponse && + error.headers.get('expires') && + error.headers.get('pragma') + ) { + return true; + } + return false; + } + + execute() { + this.authService.logout(); + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/services/status-code-error-handler.service.ts b/npm/ng-packs/packages/theme-shared/src/lib/services/status-code-error-handler.service.ts index 5bacd7c3c0..0e22ac458c 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/services/status-code-error-handler.service.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/services/status-code-error-handler.service.ts @@ -91,8 +91,6 @@ export class StatusCodeErrorHandlerService implements CustomHttpErrorHandlerServ this.showConfirmation(title, message).subscribe(); break; case 403: - this.authService.logout(); - break; case 500: this.showPage(); break;