RED-3800 - fix tenant switch.

This commit is contained in:
George 2023-12-04 15:35:46 +02:00
parent 68dbdfb8e7
commit c4bdba4683

View File

@ -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;