move if not logged in guard
This commit is contained in:
parent
6d97f7588b
commit
3f23c6d66e
5
src/lib/tenants/guards/guards-utils.ts
Normal file
5
src/lib/tenants/guards/guards-utils.ts
Normal file
@ -0,0 +1,5 @@
|
||||
export function getRouteTenant() {
|
||||
const pathParams = location.pathname.split('/').filter(Boolean);
|
||||
const uiPathIndex = pathParams.indexOf('ui');
|
||||
return pathParams[uiPathIndex + 1];
|
||||
}
|
||||
36
src/lib/tenants/guards/if-not-logged-in.guard.ts
Normal file
36
src/lib/tenants/guards/if-not-logged-in.guard.ts
Normal 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;
|
||||
};
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user