|
|
@ -1,4 +1,4 @@ |
|
|
import { Injector, inject, PLATFORM_ID } from '@angular/core'; |
|
|
import { Injector, PLATFORM_ID } from '@angular/core'; |
|
|
import clone from 'just-clone'; |
|
|
import clone from 'just-clone'; |
|
|
import { Environment } from '../models/environment'; |
|
|
import { Environment } from '../models/environment'; |
|
|
import { DOCUMENT, isPlatformBrowser } from '@angular/common'; |
|
|
import { DOCUMENT, isPlatformBrowser } from '@angular/common'; |
|
|
@ -11,28 +11,28 @@ import { firstValueFrom } from 'rxjs'; |
|
|
import { TENANT_NOT_FOUND_BY_NAME } from '../tokens/tenant-not-found-by-name'; |
|
|
import { TENANT_NOT_FOUND_BY_NAME } from '../tokens/tenant-not-found-by-name'; |
|
|
import { HttpErrorResponse } from '@angular/common/http'; |
|
|
import { HttpErrorResponse } from '@angular/common/http'; |
|
|
|
|
|
|
|
|
const platformId = inject(PLATFORM_ID); |
|
|
|
|
|
const tenancyPlaceholder = '{0}'; |
|
|
const tenancyPlaceholder = '{0}'; |
|
|
|
|
|
|
|
|
function getCurrentTenancyName(appBaseUrl: string): string { |
|
|
function getCurrentTenancyName(appBaseUrl: string, injector: Injector): string { |
|
|
|
|
|
const platformId = injector.get(PLATFORM_ID); |
|
|
|
|
|
const document = injector.get(DOCUMENT); |
|
|
if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/') appBaseUrl += '/'; |
|
|
if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/') appBaseUrl += '/'; |
|
|
|
|
|
|
|
|
const parseTokens = createTokenParser(appBaseUrl); |
|
|
const parseTokens = createTokenParser(appBaseUrl); |
|
|
const token = tenancyPlaceholder.replace(/[}{]/g, ''); |
|
|
const token = tenancyPlaceholder.replace(/[}{]/g, ''); |
|
|
const tokenValue = isPlatformBrowser(platformId) |
|
|
const tokenValue = isPlatformBrowser(platformId) |
|
|
? parseTokens(inject(DOCUMENT).defaultView?.location.href)[token]?.[0] |
|
|
? parseTokens(document.defaultView?.location.href)[token]?.[0] |
|
|
: undefined; |
|
|
: undefined; |
|
|
return tokenValue; |
|
|
return tokenValue; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
export function getCurrentTenancyNameFromUrl(tenantKey: string): string | null { |
|
|
export function getCurrentTenancyNameFromUrl(tenantKey: string, injector): string | null { |
|
|
const platformId = inject(PLATFORM_ID); |
|
|
const platformId = injector.get(PLATFORM_ID); |
|
|
|
|
|
const document = injector.get(DOCUMENT); |
|
|
if (!isPlatformBrowser(platformId)) { |
|
|
if (!isPlatformBrowser(platformId)) { |
|
|
return null; |
|
|
return null; |
|
|
} |
|
|
} |
|
|
|
|
|
const search = document.defaultView?.location.search; |
|
|
const search = inject(DOCUMENT).defaultView?.location.search; |
|
|
|
|
|
const urlParams = new URLSearchParams(search); |
|
|
const urlParams = new URLSearchParams(search); |
|
|
return urlParams.get(tenantKey); |
|
|
return urlParams.get(tenantKey); |
|
|
} |
|
|
} |
|
|
@ -43,7 +43,7 @@ export async function parseTenantFromUrl(injector: Injector) { |
|
|
const tenantNotFoundHandler = injector.get(TENANT_NOT_FOUND_BY_NAME, null); |
|
|
const tenantNotFoundHandler = injector.get(TENANT_NOT_FOUND_BY_NAME, null); |
|
|
|
|
|
|
|
|
const baseUrl = environmentService.getEnvironment()?.application?.baseUrl || ''; |
|
|
const baseUrl = environmentService.getEnvironment()?.application?.baseUrl || ''; |
|
|
const tenancyName = getCurrentTenancyName(baseUrl); |
|
|
const tenancyName = getCurrentTenancyName(baseUrl, injector); |
|
|
|
|
|
|
|
|
const hideTenantBox = () => { |
|
|
const hideTenantBox = () => { |
|
|
multiTenancyService.isTenantBoxVisible = false; |
|
|
multiTenancyService.isTenantBoxVisible = false; |
|
|
@ -91,7 +91,10 @@ export async function parseTenantFromUrl(injector: Injector) { |
|
|
*/ |
|
|
*/ |
|
|
replaceTenantNameWithinEnvironment(injector, '', tenancyPlaceholder + '.'); |
|
|
replaceTenantNameWithinEnvironment(injector, '', tenancyPlaceholder + '.'); |
|
|
|
|
|
|
|
|
const tenantIdFromQueryParams = getCurrentTenancyNameFromUrl(multiTenancyService.tenantKey); |
|
|
const tenantIdFromQueryParams = getCurrentTenancyNameFromUrl( |
|
|
|
|
|
multiTenancyService.tenantKey, |
|
|
|
|
|
injector, |
|
|
|
|
|
); |
|
|
if (tenantIdFromQueryParams) { |
|
|
if (tenantIdFromQueryParams) { |
|
|
const tenantById$ = multiTenancyService.setTenantById(tenantIdFromQueryParams); |
|
|
const tenantById$ = multiTenancyService.setTenantById(tenantIdFromQueryParams); |
|
|
return firstValueFrom(tenantById$); |
|
|
return firstValueFrom(tenantById$); |
|
|
|