move if not logged in guard

This commit is contained in:
Dan Percic 2024-01-31 11:51:49 +01:00
parent 6d97f7588b
commit 3f23c6d66e
2 changed files with 41 additions and 0 deletions

View File

@ -0,0 +1,5 @@
export function getRouteTenant() {
const pathParams = location.pathname.split('/').filter(Boolean);
const uiPathIndex = pathParams.indexOf('ui');
return pathParams[uiPathIndex + 1];
}

View File

@ -0,0 +1,36 @@
import { inject } from '@angular/core';
import { CanActivateFn, Router } from '@angular/router';
import { KeycloakService } from 'keycloak-angular';
import { NGXLogger } from 'ngx-logger';
import { getRouteTenant } from './guards-utils';
export function ifNotLoggedIn(): CanActivateFn {
return async () => {
const logger = inject(NGXLogger);
const router = inject(Router);
const keycloakService = inject(KeycloakService);
if (!keycloakService.getKeycloakInstance()) {
const tenant = getRouteTenant();
if (tenant) {
logger.warn('[ROUTES] Tenant ' + tenant + ' found in route, redirecting to /main');
await router.navigate(['main']);
return false;
}
}
if (!keycloakService.isLoggedIn()) {
logger.info('[ROUTES] Not logged in, continuing to selected route');
return true;
}
const tenant = keycloakService.getKeycloakInstance().realm;
if (!tenant) {
logger.error('[ROUTES] Tenant not found in route or keycloak realm');
return false;
}
logger.warn('[ROUTES] Is logged in for ' + tenant + ', redirecting to /' + tenant);
await router.navigate(['/main']);
return false;
};
}