public async Task <IViewComponentResult> InvokeAsync() { // navbar List <NavBarMenuItem> model = new List <NavBarMenuItem>(); // getAllMenuItems var navList = await _navBarMenuItemService.GetAll(); // anonym menu nesnelerini model listesine ekle model.AddRange(navList.Where(x => x.IsAnonym).ToList()); // client giris yapmış mı? bool isAuthenticated = User.Identity.IsAuthenticated; if (isAuthenticated) { // kişi giriş yapmış ise anonim olmayan ve rol koşulu bulunmayan menü nesnelerini modele ekle model.AddRange(navList.Where(x => !x.IsAnonym && string.IsNullOrEmpty(x.Roles)).ToList()); // giriş yaptıysa rolü var mı? var userName = User.Identity.Name; var user = await _userManager.FindByNameAsync(userName); List <string> userRoles = _userManager.GetRolesAsync(user).Result.ToList(); // eger kullanicin rolu varsa? if (userRoles.Any()) { var roledNavList = navList.Where(x => !string.IsNullOrEmpty(x.Roles)).ToList(); foreach (var item in roledNavList) { List <string> navRoles = item.Roles.Split(",").ToList(); bool hasEqualRoles = navRoles.Intersect(userRoles).Count() > 0; if (hasEqualRoles) { model.Add(item); } } } } // yukarıdaki koşullara göre servisten gelen menü nesnelerini filtrele // ardından bunu view'e dön return(View(model.OrderBy(x => x.Order).ToList())); }
public async Task <IActionResult> Index() { var list = await _navBarMenuItemService.GetAll(); return(View(list)); }