From 39b4ff1f97c06fed2e0752904bae1ab4f241fb3d Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Fri, 16 Jun 2023 18:26:48 +0300 Subject: [PATCH] RED-6713: update tenant selection --- src/lib/tenants/guards/if-logged-in.guard.ts | 4 +++- .../tenant-select/tenant-select.component.ts | 15 ++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/lib/tenants/guards/if-logged-in.guard.ts b/src/lib/tenants/guards/if-logged-in.guard.ts index d65d9f0..45c390f 100644 --- a/src/lib/tenants/guards/if-logged-in.guard.ts +++ b/src/lib/tenants/guards/if-logged-in.guard.ts @@ -16,6 +16,8 @@ export const ifLoggedIn: CanActivateFn = async (route: ActivatedRouteSnapshot) = const keycloakInstance = keycloakService.getKeycloakInstance(); const tenant = route.paramMap.get('tenant'); + const queryParams = new URLSearchParams(window.location.search); + const username = queryParams.get('username'); if (!keycloakInstance) { if (!tenant) { @@ -37,6 +39,6 @@ export const ifLoggedIn: CanActivateFn = async (route: ActivatedRouteSnapshot) = } logger.warn('[ROUTES] Redirect to login'); - await keycloakStatusService.createLoginUrlAndExecute(route.queryParamMap.get('username')); + keycloakStatusService.createLoginUrlAndExecute(username); return false; }; diff --git a/src/lib/tenants/tenant-select/tenant-select.component.ts b/src/lib/tenants/tenant-select/tenant-select.component.ts index 76c86e4..e9df36e 100644 --- a/src/lib/tenants/tenant-select/tenant-select.component.ts +++ b/src/lib/tenants/tenant-select/tenant-select.component.ts @@ -1,4 +1,4 @@ -import { Component, inject, Input } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core'; import { Router } from '@angular/router'; import { FormBuilder, Validators } from '@angular/forms'; import { TenantsService } from '../services'; @@ -10,6 +10,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; @Component({ templateUrl: './tenant-select.component.html', styleUrls: ['./tenant-select.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class TenantSelectComponent { @Input() isLoggedOut = false; @@ -19,8 +20,8 @@ export class TenantSelectComponent { // eslint-disable-next-line @typescript-eslint/unbound-method tenantId: ['', Validators.required], }); - protected readonly _tenantsService = inject(TenantsService); - protected readonly storedTenants = this._tenantsService + protected readonly tenantsService = inject(TenantsService); + protected readonly storedTenants = this.tenantsService .getStoredTenants() .sort((a, b) => a.tenant.displayName.localeCompare(b.tenant.displayName)); protected readonly titleService = inject(Title); @@ -33,7 +34,7 @@ export class TenantSelectComponent { throw new Error('No tenant selected!'); } - if (!this._tenantsService.has(tenantId)) { + if (!this.tenantsService.has(tenantId)) { this.toaster.error(_('tenant-resolve.tenant-does-not-exist')); return; } @@ -45,9 +46,9 @@ export class TenantSelectComponent { } #getQueryParams(tenantId: string) { - const existingStored = this.storedTenants.find(s => s.tenant.tenantId === tenantId); - if (existingStored) { - return { username: existingStored.email }; + const existingStored = this.storedTenants.filter(s => s.tenant.tenantId === tenantId); + if (existingStored.length === 1) { + return { username: existingStored[0].email }; } return {};