public async Task <IViewComponentResult> InvokeAsync() { //TODO: Deberia traer todos los privilegios posibles de la api? List <Privilegios> privilegios = new List <Privilegios>(); string[] allPrivilegios = Enum.GetNames(typeof(Privilegios)); var cp = UserClaimsPrincipal; foreach (var claim in cp.Claims) { //Si el claim es de tipo role y el valor equivale a alguno de los de allPrivilegios if (allPrivilegios.Any(c => claim.Type == ClaimTypes.Role && c == claim.Value)) { privilegios.Add((Privilegios)Enum.Parse(typeof(Privilegios), claim.Value)); } } string fullname = $"{cp.FindFirstValue(ClaimTypes.GivenName)} {cp.FindFirstValue(ClaimTypes.Surname)}"; var model = new SideNavViewModel { FullName = fullname, IPAdress = "npi", Privilegios = privilegios, Username = User.Identity.Name }; //kinda hack to avoid the async warning return(await Task.FromResult(View(model))); }
/// <summary> /// Shows a sidenav with subpages expanded. /// This code assumes top level pages are those with a NULL ParentPageID (ie 'Home' would not normally be the root unless you want it displayed in the sidenav). /// </summary> public ActionResult SideNavPages(string sectionCode, Page contentPage) { var data = new SideNavViewModel(); // get selected pageID int selectedPageID = 0; if (contentPage != null) { selectedPageID = contentPage.ID; } // get root (ie a top level section page) var root = contentPage; if (root == null && sectionCode != null) { root = Page.LoadByPageCode(sectionCode); } while (root.ParentPage != null) { root = root.ParentPage; } var item = new NavItem { Title = root.GetNavTitle(), Url = root.GetFullUrl(), PageCode = root.PageCode, IsExternalUrl = root.LinkUrlIsExternal }; item.IsSelected = (root.ID == contentPage.ID); data.RootNavItem = item; data.PanelTitle = root.GetNavTitle(); // get pages down from root foreach (var page in root.ChildPages.Active) { item = new NavItem { Title = page.GetNavTitle(), Url = page.GetFullUrl(), PageCode = page.PageCode, IsExternalUrl = page.LinkUrlIsExternal }; item.IsSelected = (page.ID == contentPage.ID); var isExpanded = (item.IsSelected || page.ID == contentPage.ParentPageID); if (isExpanded) { // get subpages of selected page foreach (var childPage in page.ChildPages.Active) { if (childPage.ShowInMainNav) { item.SubPages.Add(new NavItem { PageID = childPage.ID, Title = childPage.GetNavTitle(), Url = childPage.GetFullUrl(), PageCode = childPage.PageCode, IsSelected = (childPage.ID == contentPage.ID) }); } } } data.NavItems.Add(item); } return(View("SideNav", data)); }
public IViewComponentResult Invoke() { string controller = RouteData.Values["controller"].ToString(); string action = RouteData.Values["action"].ToString(); SideNavViewModel model = new SideNavViewModel { CurrentAction = action, CurrentController = controller }; return(View(model)); }