From 97ab8dc7d32943bf3e4e98104e5fe3dba0f74c44 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Wed, 5 Aug 2020 15:47:16 +0300 Subject: [PATCH] feat: use createTokenParser in multi tenancy utils --- .../src/lib/tests/multi-tenancy-utils.spec.ts | 16 +--------------- .../core/src/lib/utils/multi-tenancy-utils.ts | 12 ++++++------ 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/tests/multi-tenancy-utils.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/multi-tenancy-utils.spec.ts index 6d8b3d6941..f802e22371 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/multi-tenancy-utils.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/multi-tenancy-utils.spec.ts @@ -5,7 +5,7 @@ import clone from 'just-clone'; import { BehaviorSubject } from 'rxjs'; import { FindTenantResultDto } from '../models/find-tenant-result-dto'; import { MultiTenancyService } from '../services/multi-tenancy.service'; -import { getCurrentTenancyName, parseTenantFromUrl } from '../utils'; +import { parseTenantFromUrl } from '../utils'; const environment = { production: false, @@ -58,20 +58,6 @@ describe('MultiTenancyUtils', () => { beforeEach(() => (spectator = createComponent())); - describe('#getCurrentTenancyName', () => { - test('should get tenancy name from href', async () => { - setHref('https://abp.volosoft.com/'); - expect(getCurrentTenancyName('https://{0}.volosoft.com')).toBe('abp'); - - setHref('https://volosoft.com/'); - expect(getCurrentTenancyName('https://{0}.com')).toBe('volosoft'); - - setHref('https://volosoft.com/abp/'); - expect(getCurrentTenancyName('https://volosoft.com/{0}')).toBe('abp'); - expect(getCurrentTenancyName('https://volosoft.com')).toBe(undefined); - }); - }); - describe('#parseTenantFromUrl', () => { test('should get the tenancyName, set replaced environment and call the findTenantByName method of MultiTenancyService', async () => { const injector = spectator.inject(Injector); diff --git a/npm/ng-packs/packages/core/src/lib/utils/multi-tenancy-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/multi-tenancy-utils.ts index fae20ef614..6ba6c9e683 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/multi-tenancy-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/multi-tenancy-utils.ts @@ -1,21 +1,21 @@ import { Injector } from '@angular/core'; import { Store } from '@ngxs/store'; +import clone from 'just-clone'; import { switchMap, tap } from 'rxjs/operators'; import { SetEnvironment } from '../actions'; import { Config } from '../models/config'; import { MultiTenancyService } from '../services/multi-tenancy.service'; import { ConfigState } from '../states/config.state'; -import clone from 'just-clone'; +import { createTokenParser } from './string-utils'; const tenancyPlaceholder = '{0}'; -export function getCurrentTenancyName(appBaseUrl: string): string { +function getCurrentTenancyName(appBaseUrl: string): string { if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/') appBaseUrl += '/'; - const currentRootAddress = window.location.href; - - const regex = appBaseUrl.replace(/\./g, '.').replace(tenancyPlaceholder, '(.+)'); - return (currentRootAddress.match(regex) || []).slice(1)[0]; + const parseTokens = createTokenParser(appBaseUrl); + const token = tenancyPlaceholder.replace(/[}{]/g, ''); + return parseTokens(window.location.href)[token][0]; } export async function parseTenantFromUrl(injector: Injector) {