public async Task<ActionResult> ContentPageUpdate(int? id) { var userId = User.Identity.GetUserId(); var user = await UserManager.FindByIdAsync(userId); ViewBag.Roles = RoleManager.Roles.OrderBy(ob => ob.Name).ToList(); var model = new ContentPage(); var modelPageRoles = await _contentPageRoleService.Query().SelectAsync(); model.ContentPageRoles = modelPageRoles.ToList(); if (!id.HasValue || id == 0) { model.Author = user.FullName; } else { model = await _contentPageService.FindAsync(id); var contentPageRoles = await _contentPageRoleService.Query(x => x.ContentPageID == id.Value).SelectAsync(); model.ContentPageRoles = contentPageRoles.ToList(); } return View(model); }
public ActionResult NavigationSide() { var rootId = 0; var categories = CacheHelper.Categories.ToList(); var categoryTree = categories.OrderBy(x => x.Parent).ThenBy(x => x.Ordering).ToList().GenerateTree(x => x.ID, x => x.Parent, rootId); // Save content page user access roles var contentPages = CacheHelper.ContentPages.Where(x => x.Published).OrderBy(x => x.Ordering).ToList(); foreach (var contentPage in contentPages) { var contentPageRoles = _contentPageRoleService.Query(x => x.ContentPageID == contentPage.ID).Select(); contentPage.ContentPageRoles = contentPageRoles.ToList(); } // Get content pages that current user is authorised to access var userRoleIds = new List <string>(); if (User != null && User.Identity.IsAuthenticated) { var userId = User.Identity.GetUserId(); var userRoleNames = UserManager.GetRoles(userId).ToList(); foreach (var userRoleName in userRoleNames) { userRoleIds.Add(RoleManager.FindByName(userRoleName).Id); } contentPages = contentPages.Where(x => (x.ContentPageRoles.Count < 1) || x.ContentPageRoles.Any(sm => userRoleIds.Contains(sm.AspNetRoleID))).ToList(); } else { contentPages = contentPages.Where(x => (x.ContentPageRoles.Count < 1)).ToList(); } var model = new NavigationSideModel() { CategoryTree = categoryTree, ContentPages = contentPages }; return(View("_NavigationSide", model)); }