From f20df680aa1fe1d297bb15afaf6656cb642eef74 Mon Sep 17 00:00:00 2001 From: Bartosz Sekula Date: Fri, 15 Sep 2023 18:03:45 +0200 Subject: [PATCH] [AAE-16491] Fix session invalidation for Http 401 response (#8909) --- .../src/lib/services/alfresco-api.interface.ts | 6 ++++++ lib/core/src/lib/services/alfresco-api.service.ts | 15 +++++++++++++-- lib/core/src/lib/services/public-api.ts | 1 + 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/core/src/lib/services/alfresco-api.interface.ts b/lib/core/src/lib/services/alfresco-api.interface.ts index 5f36862136..bedd5520ab 100644 --- a/lib/core/src/lib/services/alfresco-api.interface.ts +++ b/lib/core/src/lib/services/alfresco-api.interface.ts @@ -15,6 +15,12 @@ * limitations under the License. */ +import { AlfrescoApiConfig, AlfrescoApi } from '@alfresco/js-api'; + export interface AlfrescoApiInterface { load(): Promise ; } + +export interface AlfrescoApiFactory { + createAlfrescoApi(config: AlfrescoApiConfig): AlfrescoApi; +} diff --git a/lib/core/src/lib/services/alfresco-api.service.ts b/lib/core/src/lib/services/alfresco-api.service.ts index 4d14a059e0..6973de3c61 100644 --- a/lib/core/src/lib/services/alfresco-api.service.ts +++ b/lib/core/src/lib/services/alfresco-api.service.ts @@ -15,13 +15,16 @@ * limitations under the License. */ -import { Injectable } from '@angular/core'; +import { Inject, Injectable, InjectionToken, Optional } from '@angular/core'; import { AlfrescoApi, AlfrescoApiConfig } from '@alfresco/js-api'; import { AppConfigService, AppConfigValues } from '../app-config/app-config.service'; import { ReplaySubject } from 'rxjs'; import { OauthConfigModel } from '../auth/models/oauth-config.model'; import { StorageService } from '../common/services/storage.service'; import { OpenidConfiguration } from '../auth/interfaces/openid-configuration.interface'; +import { AlfrescoApiFactory } from './alfresco-api.interface'; + +export const ALFRESCO_API_FACTORY = new InjectionToken('ALFRESCO_API_FACTORY'); @Injectable({ providedIn: 'root' @@ -43,7 +46,12 @@ export class AlfrescoApiService { return this.alfrescoApi; } - constructor(protected appConfig: AppConfigService, protected storageService: StorageService) {} + constructor( + protected appConfig: AppConfigService, + protected storageService: StorageService, + @Optional() + @Inject(ALFRESCO_API_FACTORY) private alfrescoApiFactory?: AlfrescoApiFactory + ) {} async load(config: AlfrescoApiConfig): Promise { this.currentAppConfig = config; @@ -114,6 +122,9 @@ export class AlfrescoApiService { } createInstance(config: AlfrescoApiConfig): AlfrescoApi { + if (this.alfrescoApiFactory) { + return this.alfrescoApiFactory.createAlfrescoApi(config); + } return new AlfrescoApi(config); } diff --git a/lib/core/src/lib/services/public-api.ts b/lib/core/src/lib/services/public-api.ts index 1953abfc3b..50e720ff89 100644 --- a/lib/core/src/lib/services/public-api.ts +++ b/lib/core/src/lib/services/public-api.ts @@ -16,3 +16,4 @@ */ export * from './alfresco-api.service'; +export { AlfrescoApiFactory } from './alfresco-api.interface';