public async Task <MenuViewModel> GetUserMenuAsync(IPrincipal claimsPrincipal) { if (!claimsPrincipal.Identity.IsAuthenticated) { return(new MenuViewModel()); } var userName = claimsPrincipal.Identity.Name; var user = await _userManager.FindByNameAsync(userName); if (user != null) { var menuIds = new List <string>(); foreach (var userRole in user.Roles) { var role = await _roleManager.FindByIdAsync(userRole.RoleId); var currentRolemenuIds = role.Claims.Select(x => x.ClaimValue); menuIds.AddRange(currentRolemenuIds); } return(_menu.CastMenuIdsToMenuModel(menuIds.Distinct())); } return(new MenuViewModel()); }