diff --git a/Marco.Pms.Services/Controllers/AppMenuController.cs b/Marco.Pms.Services/Controllers/AppMenuController.cs index 8bb8fdf..8818f98 100644 --- a/Marco.Pms.Services/Controllers/AppMenuController.cs +++ b/Marco.Pms.Services/Controllers/AppMenuController.cs @@ -665,6 +665,46 @@ namespace Marco.Pms.Services.Controllers Available = true }; response.Add(menuVM); + + if (item.Submenu?.Any() == true) + { + var allowedSubmenus = new List(); + + foreach (var subItem in item.Submenu) + { + if (!subItem.PermissionIds.Any()) + { + MenuSectionApplicationVM subMenuVM = new MenuSectionApplicationVM + { + Id = subItem.Id, + Name = subItem.Text, + Available = true + }; + response.Add(subMenuVM); + continue; + } + + var subMenuPermissionIds = subItem.PermissionIds + .Select(Guid.Parse) + .ToList(); + + bool isSubItemAllowed = await _permissions.HasPermissionAny(subMenuPermissionIds, employeeId); + + if (isSubItemAllowed) + { + MenuSectionApplicationVM subMenuVM = new MenuSectionApplicationVM + { + Id = subItem.Id, + Name = subItem.Text, + Available = true + }; + response.Add(subMenuVM); + } + } + + // Replace with filtered submenus + item.Submenu = allowedSubmenus; + } } else {