From c4bdba4683447f8c107c82eafd71a149e9fa2676 Mon Sep 17 00:00:00 2001 From: George Date: Mon, 4 Dec 2023 15:35:46 +0200 Subject: [PATCH] RED-3800 - fix tenant switch. --- .../tenants/services/keycloak-status.service.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/lib/tenants/services/keycloak-status.service.ts b/src/lib/tenants/services/keycloak-status.service.ts index 65d01a1..082d6ff 100644 --- a/src/lib/tenants/services/keycloak-status.service.ts +++ b/src/lib/tenants/services/keycloak-status.service.ts @@ -1,16 +1,16 @@ import { inject, Injectable } from '@angular/core'; import { KeycloakService } from 'keycloak-angular'; import { getConfig } from '../../services'; -import { TenantsService } from '../index'; +import { getKeycloakOptions, TenantsService } from '../index'; import { NGXLogger } from 'ngx-logger'; -import { APP_BASE_HREF } from '@angular/common'; +import { UI_ROOT } from '../../utils'; @Injectable({ providedIn: 'root' }) export class KeycloakStatusService { readonly #keycloakService = inject(KeycloakService); readonly #config = getConfig(); readonly #tenantsService = inject(TenantsService); - readonly #baseHref = inject(APP_BASE_HREF); + readonly #uiRoot = inject(UI_ROOT); readonly #logger = inject(NGXLogger); createLoginUrlAndExecute(username?: string | null) { @@ -34,12 +34,15 @@ export class KeycloakStatusService { let redirectUri: string; if (tenantId) { - redirectUri = this.#keycloakService.getKeycloakInstance().createLoginUrl({ + await this.#tenantsService.selectTenant(tenantId); + const newKCInstance = new KeycloakService(); + await newKCInstance.init(getKeycloakOptions(this.#uiRoot, this.#config, tenantId)); + redirectUri = newKCInstance.getKeycloakInstance().createLoginUrl({ redirectUri: this.createLoginUrl(tenantId), idpHint: this.#config.OAUTH_IDP_HINT, }); } else { - redirectUri = window.location.origin + this.#baseHref; + redirectUri = window.location.origin + this.#uiRoot; } await this.#keycloakService.logout(redirectUri); @@ -47,7 +50,7 @@ export class KeycloakStatusService { createLoginUrl(tenant?: string) { if (tenant && window.location.href.indexOf('/' + tenant + '/') > 0) { - return window.location.href + '/main'; + return window.location.href; } const origin = window.location.origin;