diff --git a/src/store/modules/route/shared.ts b/src/store/modules/route/shared.ts index 824a4a5..81e7719 100644 --- a/src/store/modules/route/shared.ts +++ b/src/store/modules/route/shared.ts @@ -19,7 +19,7 @@ export function filterAuthRoutesByRoles(routes: ElegantConstRoute[], roles: stri * @param route Auth route * @param roles Roles */ -function filterAuthRouteByRoles(route: ElegantConstRoute, roles: string[]) { +function filterAuthRouteByRoles(route: ElegantConstRoute, roles: string[]): ElegantConstRoute[] { const routeRoles = (route.meta && route.meta.roles) || []; // if the route's "roles" is empty, then it is allowed to access @@ -34,6 +34,11 @@ function filterAuthRouteByRoles(route: ElegantConstRoute, roles: string[]) { filterRoute.children = filterRoute.children.flatMap(item => filterAuthRouteByRoles(item, roles)); } + // Exclude the route if it has no children after filtering + if (filterRoute.children?.length === 0) { + return []; + } + return hasPermission || isEmptyRoles ? [filterRoute] : []; }