feat(menu-guard): enhance menu guard logic to support nested menus

This commit is contained in:
2026-07-23 17:10:04 -03:00
parent aa51742627
commit d50bd40602
2 changed files with 12 additions and 1 deletions

View File

@@ -1,6 +1,13 @@
import { inject } from '@angular/core';
import { CanActivateFn, Router } from '@angular/router';
import { TenantService } from '../services/tenant.service';
import { Menu } from '../services/tenant.interface';
function containsMenu(menues: Menu[], menuCode: string): boolean {
return menues.some(
menu => menu.code === menuCode || containsMenu(menu.submenues ?? [], menuCode)
);
}
export const hasMenuGuard = (menuCode: string): CanActivateFn => {
return () => {
@@ -13,7 +20,7 @@ export const hasMenuGuard = (menuCode: string): CanActivateFn => {
return router.createUrlTree(['/']);
}
const hasMenu = tenant.menues?.some(menu => menu.code === menuCode) ?? false;
const hasMenu = containsMenu(tenant.menues ?? [], menuCode);
if (hasMenu) {
return true;

View File

@@ -26,7 +26,11 @@ export interface EventConfig {
export interface Menu {
id: number;
code: string;
parent_menu_code: string | null;
content_type: 'static' | 'dynamic';
route: string;
static_content?: unknown;
submenues: Menu[];
}
export interface SocialMedia {