protected void CheckPermissions(UserGroup ug, RadMenuItemCollection col) { foreach (RadMenuItem i in col) { Process pr = (from p in ctx.Processes where p.Code == i.Value select p).FirstOrDefault <Process>(); if (pr != null) { Permission per = CntAriCli.GetPermission(ug, pr, ctx); if (per != null) { if (!per.View) { i.Visible = false; } } else { i.Visible = false; // If no permission not show } } else { i.Visible = false; // If doesn't exits not show } // recursive call if there are submenus or items in it if (i.Items.Count > 0) { CheckPermissions(ug, i.Items); } } }
protected void ChekPermissions(GrupoUsuario gu, RadMenuItemCollection col) { foreach (RadMenuItem i in col) { Proceso proceso = CntLainsaSci.GetProceso(i.Value, ctx); if (proceso != null) { Permiso permiso = CntLainsaSci.GetPermiso(gu, proceso, ctx); if (permiso != null) { if (!permiso.Ver) { i.Visible = false; } } else { i.Visible = false; // If no permission not show } } else { i.Visible = false; // If doesn't exits not show } // recursive call if there are submenus or items in it if (i.Items.Count > 0) { ChekPermissions(gu, i.Items); } } }
private void GetMenuItem(RadMenuItemCollection radMenuItem, string enumMenuName) { foreach (RadMenuItem menu in radMenuItem) { if (menu.Text == string.Empty) { continue; } var menuName = menu.Value == string.Empty ? menu.Text.Replace(" ", string.Empty).ToLower() : menu.Value.Replace(" ", string.Empty).ToLower(); if (enumMenuName == menuName) { menu.Enabled = true; // check select if (menu.NavigateUrl.ToLower() == ('~' + HttpContext.Current.Request.Url.AbsolutePath.ToLower())) { //menu.Selected = true; if (menu.Parent.GetType() == typeof(RadMenuItem)) { ((RadMenuItem)menu.Parent).Selected = true; } } } GetMenuItem(menu.Items, enumMenuName); } }
protected void Page_Load(object sender, EventArgs e) { this.LanguageSelector1.LanguageChanged += new EventHandler(LanguageSelector_LanguageChanged); viewingPerson = Person.FromIdentity(Int32.Parse(HttpContext.Current.User.Identity.Name)); Authority authority = viewingPerson.GetAuthority(); RadMenu MainMenu = FindControl("MainMenu") as RadMenu; Dictionary <string, bool> enableCache = new Dictionary <string, bool>(); if (Session["MainMenu-v4_Enabling"] != null && PermissionCacheTimestamp.AddSeconds(10) > DateTime.Now && Authorization.lastReload < PermissionCacheTimestamp) { enableCache = Session["MainMenu-v4_Enabling"] as Dictionary <string, bool>; } else { PermissionCacheTimestamp = DateTime.Now; } Authorization.flagReload = false; RadMenuItemCollection menuItems = MainMenu.Items; SetupMenuItemsEnabling(authority, enableCache, menuItems); Session["MainMenu-v4_Enabling"] = enableCache; if (this.Page is PageV4Base) { bool CurrentPageAccess = false; if (((PageV4Base)this.Page).pagePermissionDefault != null) { CurrentPageAccess = Authorization.CheckAuthorization(((PageV4Base)this.Page).pagePermissionDefault, -1, -1, authority, Authorization.Flag.AnyGeographyAnyOrganization); } if ((CurrentPageAccess == false && CurrentPageAllowed == false) || CurrentPageProhibited) { this.AccessDeniedPanel.Visible = true; if (CurrentPageAccess == false) { this.LabelFailedPermission.Text = (((PageV4Base)this.Page).pagePermissionDefault).ToString(); } else if (CurrentPageProhibited) { this.LabelFailedPermission.Text = "CurrentPageProhibited"; } this.BodyContent.Visible = false; } else { this.AccessDeniedPanel.Visible = false; this.BodyContent.Visible = true; } } }
protected void CheckPermissions(UserGroup ug, RadMenuItemCollection col) { foreach (RadMenuItem i in col) { Process pr = (from p in ctx.Processes where p.Code == i.Value select p).FirstOrDefault<Process>(); if (pr != null) { Permission per = CntAriCli.GetPermission(ug, pr, ctx); if (per != null) { if (!per.View) i.Visible = false; } else i.Visible = false; // If no permission not show } else i.Visible = false; // If doesn't exits not show // recursive call if there are submenus or items in it if (i.Items.Count > 0) CheckPermissions(ug, i.Items); } }
private bool SetupMenuItemsEnabling (Authority authority, Dictionary<string, bool> enableCache, RadMenuItemCollection menuItems) { //TODO: Need to handle setup when user is not swedish, current handling supposes that top org is Organization.PPSEid string thisPageUrl = Request.Url.Segments[Request.Url.Segments.Length - 1].ToLower(); bool anyItem = false; foreach (RadMenuItem item in menuItems) { string itemID = CollectItemID(item); if (enableCache.ContainsKey(itemID)) { item.Enabled = enableCache[itemID]; } else { item.Enabled = true; if (string.IsNullOrEmpty(item.Attributes["Permission"]) == false) { string permString = item.Attributes["Permission"].ToString(); PermissionSet allowedFor = new PermissionSet(permString); item.Enabled = Authorization.CheckAuthorization(allowedFor, -1, -1, authority, Authorization.Flag.AnyGeographyAnyOrganization); } else { RadMenuItem permissionParent = item; while (permissionParent.Parent is RadMenuItem) { if (string.IsNullOrEmpty(permissionParent.Attributes["Permission"]) == false) { item.Enabled = permissionParent.Enabled; item.Attributes["Permission"] = permissionParent.Attributes["Permission"].ToString(); break; } permissionParent = permissionParent.Parent as RadMenuItem; } } if (string.IsNullOrEmpty(item.NavigateUrl) && item.Items.Count == 0) item.Enabled = false; enableCache[itemID] = item.Enabled; } string[] currentItemUrlSplit = item.NavigateUrl.ToLower().Split(new char[] { '/', '?' }, StringSplitOptions.RemoveEmptyEntries); if (Array.Exists<string>(currentItemUrlSplit, delegate(String s) { if (s == thisPageUrl) return true; else return false; }) ) { if (string.IsNullOrEmpty(item.Attributes["Permission"]) == false) { string permString = item.Attributes["Permission"].ToString(); ((PageV4Base)(this.Page)).pagePermissionDefault = new PermissionSet(permString); } } if (item.Items.Count > 0) { bool enabledSubItems = SetupMenuItemsEnabling(authority, enableCache, item.Items); if (enabledSubItems) item.Enabled = true; else item.Enabled = false; } else if (string.IsNullOrEmpty(item.NavigateUrl)) { item.Enabled = false; } anyItem |= item.Enabled; } return anyItem; }
private bool SetupMenuItemsEnabling(Authority authority, Dictionary <string, bool> enableCache, RadMenuItemCollection menuItems) { //TODO: Need to handle setup when user is not swedish, current handling supposes that top org is Organization.PPSEid string thisPageUrl = Request.Url.Segments[Request.Url.Segments.Length - 1].ToLower(); bool anyItem = false; foreach (RadMenuItem item in menuItems) { string itemID = CollectItemID(item); if (enableCache.ContainsKey(itemID)) { item.Enabled = enableCache[itemID]; } else { item.Enabled = true; if (string.IsNullOrEmpty(item.Attributes["Permission"]) == false) { string permString = item.Attributes["Permission"].ToString(); PermissionSet allowedFor = new PermissionSet(permString); item.Enabled = Authorization.CheckAuthorization(allowedFor, -1, -1, authority, Authorization.Flag.AnyGeographyAnyOrganization); } else { RadMenuItem permissionParent = item; while (permissionParent.Parent is RadMenuItem) { if (string.IsNullOrEmpty(permissionParent.Attributes["Permission"]) == false) { item.Enabled = permissionParent.Enabled; item.Attributes["Permission"] = permissionParent.Attributes["Permission"].ToString(); break; } permissionParent = permissionParent.Parent as RadMenuItem; } } if (string.IsNullOrEmpty(item.NavigateUrl) && item.Items.Count == 0) { item.Enabled = false; } enableCache[itemID] = item.Enabled; } string[] currentItemUrlSplit = item.NavigateUrl.ToLower().Split(new char[] { '/', '?' }, StringSplitOptions.RemoveEmptyEntries); if (Array.Exists <string>(currentItemUrlSplit, delegate(String s) { if (s == thisPageUrl) { return(true); } else { return(false); } }) ) { if (string.IsNullOrEmpty(item.Attributes["Permission"]) == false) { string permString = item.Attributes["Permission"].ToString(); ((PageV4Base)(this.Page)).pagePermissionDefault = new PermissionSet(permString); } } if (item.Items.Count > 0) { bool enabledSubItems = SetupMenuItemsEnabling(authority, enableCache, item.Items); if (enabledSubItems) { item.Enabled = true; } else { item.Enabled = false; } } else if (string.IsNullOrEmpty(item.NavigateUrl)) { item.Enabled = false; } anyItem |= item.Enabled; } return(anyItem); }