Ejemplo n.º 1
0
        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)));
        }
Ejemplo n.º 2
0
        /// <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));
        }
Ejemplo n.º 3
0
        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));
        }